我对正则表达式有一个非常简单的问题:
源字符串: 名称:Bob Age:20
模式一:[\d]+
模式2:([\d])+
为什么模式 1 匹配:"20"
而模式 2 只匹配"0"
?
我知道量词 + 是贪心的,所以它匹配一个或多个,但是为什么当我用括号括起来字符类时,它只匹配最后一个字符?
我对正则表达式有一个非常简单的问题:
源字符串: 名称:Bob Age:20
模式一:[\d]+
模式2:([\d])+
为什么模式 1 匹配:"20"
而模式 2 只匹配"0"
?
我知道量词 + 是贪心的,所以它匹配一个或多个,但是为什么当我用括号括起来字符类时,它只匹配最后一个字符?
它匹配两者。全局匹配是数字,但捕获的匹配是括号之间的内容,即[\d]
(即\d
)。
确切的行为将取决于您使用的函数/语言:您可能会得到“20”(全局匹配)或“0”(捕获的组)。如果要捕获所有数字,请使用(\d+)
(组内的 +)。
模式 1:[\d]+
匹配一个小数序列(零个或多个),也可以写入\d+
并且将匹配20
.
Pattern2:([\d])+
匹配包含小数的组的捕获(零个或多个)only one
,因此它将匹配2
and 0
。
此外:
Pattern3:以某种方式匹配包含小数([\d]+)+
的组的捕获(零个或多个),它将匹配.one or more
greedy
20
Pattern4:以某种方式匹配包含小数([\d]+?)+
的组的捕获(零个或多个),它将匹配和。one or more
lazy
2
0