Regex 正则表达式,如果不是
我尝试实现一个应验证以下规则的正则表达式:Regex 正则表达式,如果不是,regex,if-statement,conditional,Regex,If Statement,Conditional,我尝试实现一个应验证以下规则的正则表达式: 如果字符串包含“Hello”或“再见” 字符串不能包含“World”或“MyLove” 否则 字符串必须包含“World”或“MyLove” 我尝试了几次实施,但都没有成功。这是最后一个: (?(?=(\bHello\b|\bGoodbye\b)(?!World|MyLove)(World|MyLove))) 预期结果的一些示例: 你好,你好吗,我的爱?假的 再见,亲爱的!真的 很高兴认识你!假的 很高兴认识你,我的爱人!真的 提前感谢您的帮
- 如果字符串包含“Hello”或“再见”
- 字符串不能包含“World”或“MyLove”
- 否则
- 字符串必须包含“World”或“MyLove”
(?(?=(\bHello\b|\bGoodbye\b)(?!World|MyLove)(World|MyLove)))
预期结果的一些示例:
- 你好,你好吗,我的爱?假的
- 再见,亲爱的!真的
- 很高兴认识你!假的
- 很高兴认识你,我的爱人!真的
Raphaël根据您的正则表达式口味,您可以使用以下内容:
(?x) # allow whitespace and comments
^ # anchor at start of string
(?(?= .* \b(Hello|Goodbye)\b ) # if
(?! .* \b(World|MyLove)\b ) # then
| (?= .* \b(World|MyLove)\b ) # else
)
但直接用你的语言可能会写得更清楚。例如,在Perl中:
/\b(Hello|Goodbye)\b/ ?
!/\b(World|MyLove)\b/ :
/\b(World|MyLove)\b/;
不要试图在复杂的情况下使用单一的正则表达式,否则你会被某些高代表性的固执己见的用户侮辱:-)