java - 正则表达式多重负前瞻

标签 java regex

这是我的正则表达式模式:[Ss]ection\s\d+(?![a-zA-z])(?!</ref>)

例如,它应该匹配:section 5section 50

例如,它应该匹配:section 5Asection 5</ref>section 5A</ref>section 50A

问题是实际上它匹配错误:http://regexr.com?33ien

虽然不确定模式有什么问题......

最佳答案

也许试试 [Ss]ection\s\d++(?![a-zA-z])(?!</ref>) .++ 是 possessive quantifier .这个量词类似于贪心量词,除了它阻止它匹配的字符串片段被正则表达式的后面部分使用。

例子

System.out.println("ababab".matches("(ab)++ab")); 
// prints false since last "ab" is possessed by (ab)++ 

关于java - 正则表达式多重负前瞻,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14561867/

相关文章:

javascript - jQuery 删除重复的主题标签

PHP:正则表达式匹配字符串前面没有数字或空格

java - 尝试更新映射键和值时出现 ConcurrentModificationException

java - 当输入变得很大时,findConsecutiveOnes Java代码会出现问题,为什么?

java - orphanRemoval=true 双向OneToOne

python - 在 Python 中使用正则表达式删除标点符号时出现错误转义错误

javascript - 如何仅使用 JavaScript 拆分输入字段中的数据?

java - 按 varchar 字段中存储的整数值对表进行排序

java - 检查 URL 的 mimetype 是否不是网页

java - 如何调用java程序以及使用argv