正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,用于描述、查找、替换符合某种模式的字符串。它在编程和文本处理领域有着广泛的应用。
正则表达式由一系列字符和特殊符号组成,这些字符和符号共同定义了一个搜索模式。例如,\d{3}-\d{2}-\d{4}
是一个用于匹配美国社会安全号码的正则表达式。
\d
匹配任意数字,\w
匹配任意字母或数字字符。^
表示字符串的开始,$
表示字符串的结束。*
表示零次或多次,+
表示一次或多次,?
表示零次或一次。()
可以创建一个分组,并且可以捕获该分组的内容供后续使用。?
可以实现非贪婪匹配,即尽可能少地匹配字符。应用场景包括但不限于:
import re
# 匹配邮箱地址
email_pattern = r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b'
text = "Please contact us at support@example.com for assistance."
match = re.search(email_pattern, text)
if match:
print(f"Found email: {match.group()}")
else:
print("No email found.")
# 替换文本中的所有数字为 'X'
replacement_pattern = r'\d'
replaced_text = re.sub(replacement_pattern, 'X', text)
print(f"Replaced text: {replaced_text}")
问题:正则表达式匹配结果不符合预期。
原因:
^
和 $
来限定整个字符串的匹配。解决方法:
?
来实现非贪婪匹配。^
,结尾加上 $
。例如,如果要匹配一个恰好包含三个数字的字符串,可以使用 \b\d{3}\b
,其中 \b
表示单词边界,确保不会匹配到更多或更少的数字。
通过以上方法,通常可以解决大多数正则表达式匹配不符合预期的问题。
领取专属 10元无门槛券
手把手带您无忧上云