我有两个Regex表达式,一个是^0|[1-9][0-9]*$
,另一个是^(0|[1-9][0-9]*)
,第一个表达式匹配字符串"01"
,而后一个表达式可以' t。这两个表达的区别是什么?在我看来,后者只捕获匹配的字符串。我想知道为什么后者不能匹配"01"
字符串。
答案 0 :(得分:6)
见图解说明
^0|[1-9][0-9]*$
<强>对战强>
^(0|[1-9][0-9]*)$
因此,第二个RegEx要求字符串为“0”或以1-9字符开头。
答案 1 :(得分:1)
以这种方式看待他们:
^0 # Match a 0 at the start of the string
| # or
[1-9][0-9]*$ # match a number > 1 at the end of the string.
与
^ # Match the start of the string.
( # Start of group 1:
0 # Match a zero
| # or
[1-9][0-9]* # a number > 1.
) # End of group 1.
$ # Match the end of the string.
交替扩展到第一个示例中的锚点,而它包含在第二个示例中的组中。