3

正規表現を使用して、繰り返しの文字を含め、指定されたすべての文字を含む単語を見つける方法はありますか?たとえば、リストからすべての単語を検索したい

aabc, abbc, bbbc, aaac, aaab, baac, caab, abca

正確に1つの「b」と2つの「a」 、つまり、、、、およびを含みますaabc(ただし、追加の「a」があるため、含まれません)。単語の長さは関係ありません。baaccaababcaaaab

この質問が

GREP指定された文字のみの単語のみを取得するにはどうすればよいですか?

私にいくつかのヒントを与えることができました、私はそれを拡張することができなかったので、それは繰り返しの文字を見つけるでしょう。

Pythonのreモジュールで遊んでいますが、質問の言語/ツールに制限はありません。

編集:

より良い例/ユースケースは次のとおりです。単語のリストを指定して、ユーザーが入力したすべての文字を含む単語のみを表示します。たとえば、1つの「a」、2つの「d」、および1つの「s」を含むすべての単語を検索します。 。これは正規表現で可能なものですか?(私はすでに正規表現なしでそれを行う方法を知っています。)

4

2 に答える 2

0

入力文字列の 2 つの a と 1 つの b を (任意の順序で) 正確に一致させるには、次の正規表現を使用します。

(?=^(?:[^a]*a){2}[^a]*$)(?=^[^b]*b[^b]*$)^.+$

ここにあなたのためのライブデモがあります

于 2012-10-29T15:22:31.807 に答える
0

正規表現フレーバーが先読みをサポートしている場合は、これを使用できます。

\b(?=.*b)(?=([^a]*a){2}[^a]*\b)[abc]+\b

これには、少なくとも 1 つの b と正確に 2 つの a が必要であり、文字列には a、b、および c のみが許可されます。正確に 1 つの b と合計で正確に 4 文字が必要な場合は、次のように使用します。

\b(?=[^b]*b[^b]*\b)(?=([^a]*a){2}[^a]*\b)[abc]{4}\b
于 2012-10-29T14:41:18.343 に答える