正则表达式(RegularExpression,简称RegEx)是一种强大而灵活的文本处理工具,被广泛应用于各种编程语言中。它能够帮助开发者高效地查找、匹配、替换、验证文本数据。在处理大量数据时,掌握正则表达式无疑是提升编程效率的必备技能。
正则表达式的语法看似复杂,但其实一旦掌握了基本规则,你会发现它在解决实际问题时是多么得心应手。今天,我们将为大家介绍20个常用的正则表达式,帮助你更好地应对各种文本处理任务。
1.匹配数字
正则表达式:\d
解释:\d表示匹配任意一个数字,等同于[0-9]。它可以用于匹配单个数字或多个数字。
示例:匹配“123”中的数字:
importre
result=re.findall(r'\d','abc123xyz')
print(result)#输出:['1','2','3']
2.匹配非数字
正则表达式:\D
解释:\D与\d相反,表示匹配任意非数字字符。
示例:匹配“abc123”中的非数字字符:
result=re.findall(r'\D','abc123')
print(result)#输出:['a','b','c']
3.匹配单个空白字符
正则表达式:\s
解释:\s表示匹配任意空白字符,包括空格、制表符(Tab)、换行符等。
示例:匹配字符串中的空白字符:
result=re.findall(r'\s','HelloWorld!')
print(result)#输出:['']
4.匹配非空白字符
正则表达式:\S
解释:\S与\s相反,表示匹配任何非空白字符。
示例:匹配“HelloWorld!”中的非空白字符:
result=re.findall(r'\S','HelloWorld!')
print(result)#输出:['H','e','l','l','o','W','o','r','l','d','!']
5.匹配字母和数字
正则表达式:\w
解释:\w匹配字母、数字及下划线,等价于[a-zA-Z0-9_]。
示例:匹配“hello_123”的字母和数字:
result=re.findall(r'\w','hello_123')
print(result)#输出:['h','e','l','l','o','_','1','2','3']
6.匹配非字母和数字
正则表达式:\W
解释:\W与\w相反,表示匹配任意非字母、非数字及非下划线的字符。
示例:匹配“hello@world!”中的非字母和数字:
result=re.findall(r'\W','hello@world!')
print(result)#输出:['@','!']
7.匹配开头的字符
正则表达式:^
解释:^用于匹配字符串的开头。例如,^abc表示匹配以“abc”开头的字符串。
示例:匹配以“Hello”开头的字符串:
result=re.match(r'^Hello','HelloWorld')
print(result.group())#输出:Hello
8.匹配结尾的字符
正则表达式:$
解释:$用于匹配字符串的结尾。例如,abc$表示匹配以“abc”结尾的字符串。
示例:匹配以“World”结尾的字符串:
result=re.match(r'World$','HelloWorld')
print(result.group())#输出:World
9.匹配特定字符重复次数
正则表达式:{n,m}
解释:{n,m}表示匹配前一个字符至少n次,最多m次。例如,a{2,4}表示匹配连续出现2到4次的字母“a”。
示例:匹配“aaabb”中的重复字母:
result=re.findall(r'a{2,4}','aaabb')
print(result)#输出:['aaa']
10.匹配任意字符
正则表达式:.
解释:.表示匹配任意字符(除了换行符)。
示例:匹配“abc123”中的任意字符:
result=re.findall(r'.','abc123')
print(result)#输出:['a','b','c','1','2','3']
11.匹配重复的字符
正则表达式:*
解释:*表示匹配前一个字符零次或多次。例如,a*表示匹配零个或多个“a”。
示例:匹配“aaabbb”中的“a”字符:
result=re.findall(r'a*','aaabbb')
print(result)#输出:['aaa','','','']
12.匹配至少一次字符
正则表达式:+
解释:+表示匹配前一个字符至少一次。例如,a+表示匹配一个或多个“a”。
示例:匹配“aaabbb”中的“a”字符:
result=re.findall(r'a+','aaabbb')
print(result)#输出:['aaa']
13.匹配指定字符集
正则表达式:[abc]
解释:[abc]表示匹配字符集中的任意一个字符。例如,[aeiou]表示匹配元音字母。
示例:匹配“apple”中的元音字母:
result=re.findall(r'[aeiou]','apple')
print(result)#输出:['a','e']
14.匹配不在指定字符集内的字符
正则表达式:[^abc]
解释:[^abc]表示匹配不在字符集中的任意字符。
示例:匹配“apple”中的非元音字母:
result=re.findall(r'[^aeiou]','apple')
print(result)#输出:['p','p','l']
15.分组匹配
正则表达式:()
解释:使用括号()可以对正则表达式进行分组,分组后可以通过编号或名字进行引用。
示例:提取日期中的年、月、日:
result=re.match(r'(\d{4})-(\d{2})-(\d{2})','2025-02-04')
print(result.groups())#输出:('2025','02','04')
16.匹配多种模式中的任意一种
正则表达式:|
解释:|表示逻辑“或”,用于匹配多种模式中的任意一种。例如,abc|def表示匹配“abc”或“def”。
示例:匹配“apple”中的“apple”或“banana”:
result=re.match(r'apple|banana','applepie')
print(result.group())#输出:apple
17.匹配数字范围
正则表达式:[0-9]
解释:[0-9]表示匹配任何一个数字,等同于\d。
示例:匹配“abc123”中的数字:
result=re.findall(r'[0-9]','abc123')
print(result)#输出:['1','2','3']
18.断言匹配
正则表达式:(?=...)
解释:正向预查(?=...)用于检查某个位置后面是否是指定的模式,但不包括它本身。
示例:匹配“abc123”中的“abc”后面跟着数字:
result=re.findall(r'abc(?=\d)','abc123')
print(result)#输出:['abc']
19.非捕获分组
正则表达式:(?:...)
解释:非捕获分组(?:...)与普通分组相似,但不会产生捕获结果,适用于不需要捕获的分组。
示例:匹配“abc123”中的字母和数字:
result=re.findall(r'(?:abc)(\d+)','abc123')
print(result)#输出:['123']
20.任意长度的字符匹配
正则表达式:.*
解释:.*表示匹配任意字符零次或多次,适用于匹配任意长度的文本。
示例:匹配任意长度的文本:
result=re.match(r'.*','HelloWorld')
print(result.group())#输出:HelloWorld
通过掌握这些常用的正则表达式,你可以轻松应对各种文本处理任务,无论是数据清洗、日志分析,还是网页抓取,正则表达式都将成为你不可或缺的利器。