如何or在不允许重复的情况下使用操作符?换句话说正则表达式:
(word1|word2|word3)+
Run Code Online (Sandbox Code Playgroud)
会匹配, word1word2但也会匹配word1word1我不想要的,因为word1正在重复.我该如何避免重复?
总之,我希望以下主题匹配:
word1word2word3
word1
word2
word3word2
Run Code Online (Sandbox Code Playgroud)
注意它们都匹配,因为没有重复.我希望以下主题失败:
word1word2word1
word2word2
word3word1word2word2
Run Code Online (Sandbox Code Playgroud)
感谢@Mark 我知道:
(?xi)
(?:
(?<A>word1|word2)(?! .* \k<A> ) # match for word1 or word2 but make sure that if you capture it it does not follow what it was just captured
| (?<B>word3|word4)(?! .* \k<B> )
)+
Run Code Online (Sandbox Code Playgroud)
因为我有兴趣看看是否在A组或B组中捕获了某些东西.
您可以使用负向前瞻:
^(?:word1(?!.*word1)|word2(?!.*word2)|word3(?!.*word3))+$
Run Code Online (Sandbox Code Playgroud)
看到它在线工作:rubular
| 归档时间: |
|
| 查看次数: |
25222 次 |
| 最近记录: |