1

次のルールを検証する正規表現を実装しようとしています:

  • 文字列に「Hello」または「Goodbye」が含まれている場合
  • 文字列に「World」または「MyLove」を含めることはできません
  • そうしないと
  • 文字列には「World」または「MyLove」が含まれている必要があります

私はいくつかの実装を試みましたが、成功しませんでした。これが最後のものです:

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

期待される結果の例:

  • こんにちは、お元気ですか MyLove ? 間違い
  • さようなら、私の愛する人!真実
  • お会いできて嬉しいです !間違い
  • はじめまして 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 に答える