正则表达式入门

正则表达式入门

什么是正则表达式

正则表达式(Regular Expression,简称Regex或RegExp)是一种广泛应用于文本处理领域的表达式语言。它拥有强大的字符串匹配和搜索功能,能够高效地处理复杂的文本处理任务。在计算机科学和软件开发领域,正则表达式属于基本的技能之一。

正则表达式的基本语法

正则表达式主要由普通字符和元字符组成。普通字符代表字符本身,而元字符则表示一些特殊含义。其中,常见的元字符包括:

  • .:匹配任意单个字符(除换行符外)
  • *:匹配零个或多个前面的元素
  • +:匹配一个或多个前面的元素
  • ?:匹配零个或一个前面的元素
  • [abc]:匹配a、b或c中的任意一个字符
  • [^abc]:匹配除a、b、c以外的任意一个字符
  • \d:匹配一个数字字符
  • \D:匹配一个非数字字符
  • \w:匹配一个单词字符(字母、数字、下划线)
  • \W:匹配一个非单词字符
  • \s:匹配一个空白字符(空格、制表符、换行符等)
  • \S:匹配一个非空白字符
  • ^:匹配字符串的开头
  • $:匹配字符串的结尾

正则表达式的应用场景

正则表达式可以应用于多种文本处理场景,例如:

1. 邮箱地址验证

import re

def check_email(email):
    pattern = r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$'
    return True if re.match(pattern, email) else False

2. 手机号码验证

function checkMobile(mobile) {
  var pattern = /^1[3-9]\d{9}$/;
  return pattern.test(mobile);
}

3. HTML标签替换

String html = "<p class=\"title\">Welcome to my website!</p>";
String pattern = "<.*?>";
String replacement = "";
String plainText = html.replaceAll(pattern, replacement);
System.out.println(plainText); // Welcome to my website!

4. 中文分词

import jieba

sentence = "自然语言处理技术是目前人工智能领域的重要研究方向之一"
words = jieba.lcut(sentence)
print(words) # ['自然语言', '处理', '技术', '是', '目前', '人工智能', '领域', '的', '重要', '研究', '方向', '之一']

实战练习

1. 判断一个字符串是否包含数字

def has_number?(str)
  pattern = /\d/
  !!pattern.match(str)
end

puts has_number?("hello world") #=> false
puts has_number?("hello 123") #=> true

2. 判断一个字符串是否为日期格式(YYYY-MM-DD)

function isValidDate(dateStr) {
  var pattern = /^\d{4}-\d{2}-\d{2}$/;
  if (!pattern.test(dateStr)) return false;
  var date = new Date(dateStr);
  if (isNaN(date.getTime())) return false;
  return true;
}

console.log(isValidDate("2022-01-16")); // true
console.log(isValidDate("2022/01/16")); // false

3. 匹配一个字符串中的所有整数

import re

def find_integers(s):
    pattern =r'\d+'
    return re.findall(pattern, s)

print(find_integers("hello 123 world 456")) # ['123', '456']

4. 将网页中的图片链接替换为本地存储路径

String html = "<img src=\"http://example.com/image.jpg\">";
String pattern = "<img\\s+src=\"(http://.+?)\"";
String replacement = "<img src=\"/images/$1\"";
String localHtml = html.replaceAll(pattern, replacement);
System.out.println(localHtml); // <img src="/images/http://example.com/image.jpg">

结论

正则表达式是一种强大的文本处理工具,掌握它可以帮助我们高效地完成各种复杂文本处理任务。在实际应用中,我们需要根据具体情况选择正确的正则表达式模式,同时注意正确处理编码和转义问题。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程