1. *
- 含义:匹配前面的元素零次或者多次。
-
示例:对于正则表达式
a*,在字符串"aaaa"中,它会匹配整个"aaaa",因为它会尽可能多地匹配a字符。 - 代码示例(Python):
import re text = "aaaa" pattern = re.compile(r'a*') result = pattern.search(text) print(result.group()) # 输出: aaaa
2. +
- 含义:匹配前面的元素一次或者多次。
-
示例:正则表达式
a+在字符串"aaaa"中,同样会匹配整个"aaaa",不过它至少要匹配一次a字符。 - 代码示例(Python):
import re text = "aaaa" pattern = re.compile(r'a+') result = pattern.search(text) print(result.group()) # 输出: aaaa
3. ?
- 含义:匹配前面的元素零次或者一次。
-
示例:正则表达式
colou?r可以匹配"color"和"colour",u?表示u这个字符可以出现零次或者一次。 - 代码示例(Python):
import re text1 = "color" text2 = "colour" pattern = re.compile(r'colou?r') result1 = pattern.search(text1) result2 = pattern.search(text2) print(result1.group()) # 输出: color print(result2.group()) # 输出: colour
4. {n,}
-
含义:匹配前面的元素至少
n次。 -
示例:正则表达式
a{2,}在字符串"aaaa"中,会匹配整个"aaaa",因为它要求a至少出现 2 次。 - 代码示例(Python):
import re
text = "aaaa"
pattern = re.compile(r'a{2,}')
result = pattern.search(text)
print(result.group()) # 输出: aaaa
5. {n,m}
-
含义:匹配前面的元素至少
n次,但不超过m次。 -
示例:正则表达式
a{2,3}在字符串"aaaa"中,会匹配前三个a,即"aaa",因为它尽量在 2 到 3 次的范围内进行最大匹配。 - 代码示例(Python):
import re
text = "aaaa"
pattern = re.compile(r'a{2,3}')
result = pattern.search(text)
print(result.group()) # 输出: aaa
贪婪字符会尽可能多地去匹配符合条件的字符,直到无法再匹配为止,因此会导致回溯问题,因此在实际应用中,应该避免使用贪婪字符。
如果想让贪婪字符变为非贪婪模式,只需在其后加上 ? 即可,如:*?、+?、??、{n,}?、{n,m}?,
此模式将会尽可能少的去匹配字符,但是可能无法达到预期结果,大家酌情选择。
总结
到此这篇关于正则表达式中常见的贪婪词有哪些举例的文章就介绍到这了,更多相关正则表达式贪婪词内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!
