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

时间:2015-07-28 11:04:19

标签: java regex

我是正则表达式的初学者。我读到\b[1-9][0-9]{2,4}\b10099999之间的数字相匹配,但\b[1-9][0-9]{2,4}\b\b[1-9]{2,4}\b之间的区别是什么,为什么提到的模式与{之间的数字相匹配? {1}}和100

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

4 个答案:

答案 0 :(得分:1)

您的理解并不完全正确。

  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}

答案 1 :(得分:0)

  

\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]

试用正则表达式,您可以使用https://regex101.com/

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

\b ==>确保单词边界。 ie。,不允许你的字符串在111111000011111

之类的另一个数字字符串中

[1-9][0-9]{2,4} ==>数字1到9后跟数字(在0到9之间),其最小长度= 2,最大长度= 4.这匹配字符串:132,10234但不是012或11。

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