0

我对正则表达式有一个非常简单的问题:

源字符串: 名称:Bob Age:20

模式一:[\d]+

模式2:([\d])+

为什么模式 1 匹配:"20"而模式 2 只匹配"0"

我知道量词 + 是贪心的,所以它匹配一个或多个,但是为什么当我用括号括起来字符类时,它只匹配最后一个字符?

4

2 回答 2

2

它匹配两者。全局匹配是数字,但捕获的匹配是括号之间的内容,即[\d](即\d)。

确切的行为将取决于您使用的函数/语言:您可能会得到“20”(全局匹配)或“0”(捕获的组)。如果要捕获所有数字,请使用(\d+)(组内的 +)。

于 2013-10-14T15:37:12.667 回答
1

模式 1:[\d]+匹配一个小数序列(零个或多个),也可以写入\d+并且将匹配20.

Pattern2:([\d])+匹配包含小数的组的捕获(零个或多个)only one,因此它将匹配2and 0

此外

Pattern3:以某种方式匹配包含小数([\d]+)+的组的捕获(零个或多个),它将匹配.one or moregreedy20

Pattern4:以某种方式匹配包含小数([\d]+?)+的组的捕获(零个或多个),它将匹配和。one or morelazy20

于 2013-10-14T16:25:13.157 回答