这是我的正则表达式模式:[Ss]ection\s\d+(?![a-zA-z])(?!</ref>)
例如,它应该匹配:section 5
或section 50
例如,它不应该匹配:section 5A
或section 5</ref>
或section 5A</ref>
或section 50A
问题在于实际情况下,它错误地匹配了它们:http://regexr.com?33ien
不确定模式有什么问题...
这是我的正则表达式模式:[Ss]ection\s\d+(?![a-zA-z])(?!</ref>)
例如,它应该匹配:section 5
或section 50
例如,它不应该匹配:section 5A
或section 5</ref>
或section 5A</ref>
或section 50A
问题在于实际情况下,它错误地匹配了它们:http://regexr.com?33ien
不确定模式有什么问题...
[Ss]ection\s\d++(?![a-zA-z])(?!</ref>)
。 ++是占有型量词。这个量词与贪婪型量词类似,但它会阻止已匹配的字符串片段被后面的正则表达式所使用。System.out.println("ababab".matches("(ab)++ab"));
// prints false since last "ab" is possessed by (ab)++
section 50A
:
section 5
后面跟着0A
,而这并不在您的负向先行断言中。[Ss]ection\s\d+(?![a-zA-Z0-9])(?!</ref>)
[Ss]ection\s\d+(?!\d)(?![a-zA-z])(?!</ref>)
$
,还是关于后续文本的某些断言(在我的提议解决方案中不查看数字)。
\d++
是什么意思? - jlordo\d++
是一个贪婪量词。 - Rohit Jain