带有条件的java中的正则表达式
Posted
技术标签:
【中文标题】带有条件的java中的正则表达式【英文标题】:regex in java with conditions 【发布时间】:2012-09-10 08:42:59 【问题描述】:我必须根据以下条件用Java编写Regex:
总位数字符限制 = 64 可以接受单个数字 0 如果多于一个数字,则第一个数字必须是 1 到 9 后面的数字可以是 0 到 9 小数点后允许两位数 不接受逗号到目前为止,我只得到了这个:
(\\d1,64)
谁能帮帮我
【问题讨论】:
【参考方案1】:如果你把它分成 4 个场景,可能是最清晰的:
(0(\.\d1,2)?|[1-9](\d0,63|\d0,61\.\d|\d0,60\.\d\d))
这是一个 0 可选地后跟一个小数和一个或两个数字,或者一个 1-9 后跟以下之一:
最多多 63 个数字 最多多 61 个数字,一个小数,多一个数字 最多多 60 个数字,一个小数,多两个数字绝对值得在 Java 正则表达式中添加一些内联 cmets,但我对 Java 的正则表达式语法不太了解,所以我将把它作为练习留给读者。
【讨论】:
【参考方案2】:Pattern regex = Pattern.compile(
"^ # Start of string \n" +
"(?!.65) # Assert length not 65 or greater \n" +
"(?: # Match either \n" +
" 0 # 0 \n" +
"| # or \n" +
" [1-9]\\d* # 1-n, no leading zeroes \n" +
") # End of alternation \n" +
"(?: # Match... \n" +
" \\. # a dot \n" +
" \\d2 # followed by exactly 2 digits \n" +
")? # ...optionally \n" +
"$ # End of string",
Pattern.COMMENTS);
【讨论】:
感谢您的解释。你摇滚。 @user1679321,如果这回答了您的问题,请检查它旁边的标记。欢迎来到 SO!以上是关于带有条件的java中的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
我可以使用哪种正则表达式条件来捕获具有 R 中单位的数学公式?