1

我尝试实现一个应该验证以下规则的正则表达式:

  • 如果字符串包含“Hello”或“Goodbye”
  • 字符串不能包含“World”或“MyLove”
  • 别的
  • 字符串必须包含“World”或“MyLove”

我尝试了几个实施但没有成功。这是最后一个:

(?(?=(\bHello\b|\bGoodbye\b)(?!World|MyLove)(World|MyLove)))

预期结果的一些示例:

  • 你好,你好吗我的爱人 ?错误的
  • 再见,亲爱的!真的
  • 很高兴见到你 !错误的
  • 很高兴认识你我的爱!真的

预先感谢您的帮助。

拉斐尔

4

1 回答 1

0

根据您的正则表达式风格,您可以使用以下内容:

(?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/;
于 2013-09-10T08:11:48.833 回答