我正在尝试使用 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/