引言

正则表达式(Regular Expression,简称 Regex)是一种强大的文本处理工具,广泛应用于编程、数据处理、文本编辑等领域。它允许开发者定义一系列的字符和符号来匹配、查找、替换或验证字符串中的特定模式。掌握正则表达式,意味着你能够更高效地处理文本数据,解决各种文本处理难题。

正则表达式的核心语法

1. 元字符

正则表达式中的元字符是具有特殊含义的字符,用于定义匹配规则。以下是一些常见的元字符:

  • .:匹配除换行符以外的任意单个字符。
  • *:匹配前面的子表达式零次或多次。
  • +:匹配前面的子表达式一次或多次。
  • ?:匹配前面的子表达式零次或一次。
  • {n}:匹配前面的子表达式恰好n次。
  • {n,}:匹配前面的子表达式至少n次。
  • {n,m}:匹配前面的子表达式至少n次,但不超过m次。

2. 字符集

字符集用于匹配一系列字符。以下是一些字符集的语法:

  • [abc]:匹配a、b或c中的任意一个字符。
  • [a-z]:匹配a到z之间的任意小写字母。
  • [A-Z]:匹配A到Z之间的任意大写字母。
  • [^abc]:匹配除了a、b、c之外的任意字符。

3. 定位符

定位符用于指定匹配的位置。以下是一些常见的定位符:

  • ^:匹配输入字符串的开始位置。
  • $:匹配输入字符串的结束位置。
  • \b:匹配单词边界。
  • \B:匹配非单词边界。

正则表达式的实战技巧

1. 电子邮件地址验证

import re

email_pattern = r'^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
email = 'example@example.com'

if re.match(email_pattern, email):
    print('Valid email address')
else:
    print('Invalid email address')

2. 电话号码提取

import re

phone_pattern = r'\b\d{3}[-.]?\d{3}[-.]?\d{4}\b'
text = 'My phone number is 123-456-70 or 123.456.70.'

phone_numbers = re.findall(phone_pattern, text)
for number in phone_numbers:
    print(number)

3. HTML标签清理

import re

html = '<div>这是一个 <span>HTML</span> 文本</div>'
clean_html = re.sub(r'<[^>]+>', '', html)

print(clean_html)

总结

正则表达式是一种强大的文本处理工具,能够帮助开发者解决各种文本处理难题。通过掌握正则表达式的核心语法和实战技巧,你将能够更高效地处理文本数据,提高编程效率。