美好的一天,我的模式有问题[\\d{1,4}]{1,3}+[x?]{0,2}+[\\'?\\d {1,4}]
此模式必须检查测量系统是否正确输入。
最大的字符串可能是9999x9999x9999'9999
,并且永远不会以x
结尾,但也只能是'9999
,因为这意味着半径!
所以我的问题是,当我有 9999x
或 9999x9999x9999x9999x99999
时它是正确的,而当 1
时它是错误的:/
我不明白为什么 1
为 false 以及如何限制每个 x
之后的 x
和整数!
为了更好地理解,这是widthXheightXdepth'radius
。
最佳答案
[]
是 character class 。您可能想使用 ()
来代替。
根据您的 previous question 判断您想要接受表格
Int
Int x Int
Int x Int x Int
还有
Int ' Int
Int x Int ' Int
Int x Int x Int ' Int
因此,您的模式必须明确接受一个 Int
并可选择最多接受两个 x Int
,然后可选择接受 ' Int
。
你可以像这样实现它。
Int( x Int){0,2}(' Int){0,1}
或者使用?
标记代替{0,1}
现在你说Int
的范围是1-9999。
因此,您的号码开头至少包含一位 1-9
范围内的数字,并在 0-9
范围内包含十到最多三位数字。可以写成
[1-9][0-9]{0,3}
或者[0-9]
使用\\d
(它是相同的 - d是数字的缩写)
现在尝试将其结合起来,您将得到最终的模式。
关于java - 我的正则表达式模式中的误解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15619849/