当前位置: 代码迷 >> java >> 令牌可以在正则表达式中重复多少次
  详细解决方案

令牌可以在正则表达式中重复多少次

热度:62   发布时间:2023-08-04 09:30:48.0

我是regex的初学者。 我读到\\b[1-9][0-9]{2,4}\\b匹配10099999之间的数字,但是\\b[1-9][0-9]{2,4}\\b什么区别\\b[1-9][0-9]{2,4}\\b\\b[1-9]{2,4}\\b ,为什么提到的模式匹配10099999之间的数字?

我认为因为min=2max=4模式匹配10到9999之间的数字,因为最小的两位数字是10,最大的四位数字是9999。

您的理解并不完全正确。

  xy{2,4} matches x followed by 2 to 4 y => xyy or xyyy or xyyyy

在你的情况[1-9][0-9]{2,4}匹配之间的任何数字[1-9]后跟任意2 to 4中数字[0-9] 所以它匹配之间的任何数字

100 - 1 coming from [1-9] and 00 coming from [0-9]{2,4}

99999 - 9 coming from [1-9] and 9999 coming from [0-9]{2,4}

但是\\b[1-9][0-9]{2,4}\\b\\b[1-9]{2,4}\\b ...有什么区别?

在第二个正则表达式中,您不能有任何0 s

所以第二个中没有10。

[1-9][0-9]{2,4}匹配1 00到9 9999(第一部分是1-9,然后您可以加00-9999)

{2,4}仅属于[0-9] ...,因此恰好是[1-9]和2-4 [0-9]

要试用正则表达式,可以使用

该表达式表示:首先是空格,然后是1-9范围内的数字,然后是2到4范围0-9之间的数字。 因此,最小数量为100。

\\b[1-9][0-9]{2,4}\\b ==>

\\b ==>确保单词边界。 即,不允许您的字符串位于另一个数字字符串之内,例如111111000011111

[1-9][0-9]{2,4} ==>一个数字1到9,然后是一个最小长度= 2且最大长度= 4的数字(介于0到9之间)。该字符串与以下字符串匹配:132, 10234,但不是012或11。

\\b[1-9]{2,4}\\b ==>匹配1到9 2到4次。 即19、193、1934年均有效