从这个字符串“asdfasdf obama blahobama obama。> obama”
它不应该与blahobama或> obama
相匹配目前我有这个正则表达式\ bobama \ b
但它也找到“> obama”
我只想找到前两个“奥巴马”。
不是第三个。 >奥巴马不应该找到匹配。
答案 0 :(得分:2)
一个简单的选择是在单词周围使用lookarounds专门禁止<
和>
:
(?<![<>])\bobama\b(?![<>])
Working example on Regex Storm.net
同样,您可以根据需要使用Unicode categories:
(?<!\p{S})\bobama\b(?!\p{S})
您可以使用字符类组合它们,例如,也可以排除数字,而不是\p{S}
使用[\p{S}\p{N}]
。
答案 1 :(得分:1)
[^>]\bobama\b
但如果您想选择它,它不会选择obama
开始一行:
((^)|([^>]\b))obama\b