java - 我的正则表达式模式中的误解

标签 java regex

美好的一天,我的模式有问题[\\d{1,4}]{1,3}+[x?]{0,2}+[\\'?\\d {1,4}]

此模式必须检查测量系统是否正确输入。

最大的字符串可能是9999x9999x9999'9999,并且永远不会以x结尾,但也只能是'9999,因为这意味着半径!

所以我的问题是,当我有 9999x9999x9999x9999x9999x99999 时它是正确的,而当 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/

相关文章:

java - 为什么此 Java 流的一个版本在静态 map 上工作而另一个版本失败?

java - Android ObjectAnimator 如何识别属性设置方法?

regex - Perl 多行字符串正则表达式

JavaScript RegEx 字符串结尾不起作用

用于查找单词和引号的正则表达式

java - 如何将数量条件添加到正则表达式而不将数量包含到匹配组中?

java - 使用流将 Java 列表转换为映射,其中映射中的每个值共享相同的属性

java - 使用 Java 更新 MongoDB 中的特定字段而不是整个文档

java - 在 URL 中链接参数以执行 java 中所需的功能

java - String.split() - 在第一个定界符之前匹配前导空字符串?