Python 正则表达式中的元素
我是个新手。“*”和“+”之间有什么区别?它们似乎都尽可能地表示等于前面的元素零次或多次?Python 正则表达式中的元素,python,regex,Python,Regex,我是个新手。“*”和“+”之间有什么区别?它们似乎都尽可能地表示等于前面的元素零次或多次?+表示一次或多次,而*表示零次或多次 “*”导致结果RE匹配0或多次重复 在RE之前,尽可能多的重复。ab*将与“a”匹配, “ab”或“a”后跟任意数量的“b” “+”导致生成 RE匹配前面RE的1或更多重复。ab+将匹配 “a”后跟任何非零个“b”;它不可能只匹配 “a” *匹配0次或更多次。即使没有对手,它也是成功的。因此,a*即使在字符串bcd +匹配1次或多次。应该至少有一场比赛,然后才是成功的。
+
表示一次或多次,而*
表示零次或多次
“*”导致结果RE匹配0或多次重复
在RE之前,尽可能多的重复。ab*将与“a”匹配,
“ab”或“a”后跟任意数量的“b”
“+”导致生成
RE匹配前面RE的1或更多重复。ab+将匹配
“a”后跟任何非零个“b”;它不可能只匹配
“a”
*
匹配0次或更多次。即使没有对手,它也是成功的。因此,a*
即使在字符串bcd
+
匹配1次或多次。应该至少有一场比赛,然后才是成功的。如果我们使用a+
,那么应该至少有一个a
存在,以便成功匹配。因此,对于字符串bcd
*
和+
本质上都是贪婪的,因此在终止或回溯之前,它们将尽可能匹配
+
量词选择前面的字符1
或更多次,次数尽可能多
*
量词选择前面的字符0
或更多次,次数尽可能多
例子
使用正则表达式(带有+
):
使用正则表达式(带有*
):
关于re
的引用:
+
-使生成的RE与前面RE的1
或更多重复匹配ab+
将匹配a
,后跟任何非零的b
s;它不会只匹配a
*
-使生成的RE与前面RE的0
或更多重复匹配,重复次数尽可能多ab*
将匹配a
、ab
或a
,后跟任意数量的b
shelp('re')
为您提供了大量信息,包括这些信息。
foo1bar # Match
foo234bar # Match
foobar # Not a Match
foo1bar # Match
foo234bar # Match
foobar # Match