java - 为什么我的包含\d{1,} 的正则表达式和否定的前瞻性仍然匹配,而它不应该匹配?

标签 java regex

我正在尝试使用 Java 中的正则表达式来匹配字符串中的坐标对。我明确希望使用否定先行排除字符串。

待匹配:

558,228
558,228,
558,228,589
558,228,A,B,C

不匹配:

558,228,<Text>

正则表达式 ^558,228(?!,<).*完成工作,同时 ^\d{1,},\d{1,}(?!,<).*没有。它与元字符\d 而不是值的正则表达式相同。有什么想法吗?

最佳答案

原因是.*部分在最后。它匹配之前未匹配的所有内容。 结合\d{1,} ,它允许匹配少于 3 位数字,它将像这样: ^\d{1,},\d{1,}(?!,<)将匹配 558,22.*将匹配剩余部分 8,<Text> .

关于java - 为什么我的包含\d{1,} 的正则表达式和否定的前瞻性仍然匹配,而它不应该匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077869/

相关文章:

java - 如何为GWT多选列表框设置单选?

java - 线程安全,无需通过可变状态进行同步

java - 读取 PDF、接收文本以及写入新 PDF 的简单方法。 ( java )

Java正则表达式从0-9连续查找最后一位数字并且前6位数字相同

regex - 一个正则表达式,它会捕获引号中的任何内容+引号中的单词草稿?只有带有 Draft 一词的引号

正则表达式 exp 只检测一次 "abc-xxx"模式

java - 为什么我的 zip 文件中的图像已损坏?

java - Java 中的正则表达式 : find all instances of [char1] but only if they are not preceded by [char2]

javascript - jQuery:如果用户点击的元素类与被点击元素的类匹配,则删除该类元素

java - 你如何使用正则表达式按 unicode 字符拆分字符串?