0

似合う柄を作りたい

"foo | bar"
"baz | foo"
"foo & bar"
"baz ; bar"

つまり、「キーワード」は「foo」、「bar」、「baz」です。

そのうち少なくとも 2 つが表示されます。

それらの順序は重要ではありません。

「;」、「&」、または「|」のいずれかが必要です。間に。

これに合わせて作成できる式はありますか?

次のような「ハードコードされた」ものは探していません

(foo|bar|baz)[\|&;](foo|bar|baz)

キーワードのリストは実際にははるかに大きいため、これをより「一般的」に行う方法です。

4

2 に答える 2

1

次のように書くことができます:

^(?=\w)((^|[\|&;])(foo|bar|baz|...other.keywords...)){2,}"

(免責事項:テストされていません。)

于 2013-05-24T21:08:21.503 に答える
0

あなたの「ハードコードされた」ソリューションは、正規表現が独自のものになるのと同じくらい近いと思いますが、これがスクリプト環境内にあると仮定すると、より一般的な正規表現と手続き型コードを組み合わせることができます。

たとえば、次のようなパターンで任意の 2 つの単語をキャプチャし、/([a-z])[/|&;]([a-z])/見つかった単語をリストまたはハッシュ テーブルに対してチェックして、正しい一致があるかどうかを確認できます。

于 2013-05-24T21:09:19.523 に答える