3

私はこの正規表現を持っています:

(\b)(emozioni|gioia|felicità)(\b)

以下のような文字列で:

emozioni emozioniamo felicità felicitàs

最初と 3 番目の単語に一致する必要があります。代わりに、最初と最後に一致します。アクセントのあるキャラクターのせいだと思います。私はこの代替案を試しました:

(\b)(emozioni|gioia|felicità\s)(\b)

ただし、「felicità」の後に他の単語がある場合にのみ一致します。したがって、このコンテキストにある場合にのみ具体的にするために:

emozioni emozioniamo felicità felicitàs

この他のものではありません:

emozioni emozioniamo felicitàs felicità

フランス語のアクセント付き文字に関する記事を見つけました (つまり、単語の先頭にある)ここで、2 番目の回答に従いました。誰かがより良い解決策を知っていれば、それは大歓迎です。

4

2 に答える 2

2

単語境界は、文字クラス、つまりの文字\bでのみ機能します。したがって、のようなアクセント付き文字の後に a を付けることはできません。\w[0-9a-zA-Z_]\bà

先読みを使用して、ケースの問題を解決できます。

felicità(?=\s|$)

またはそれより短い:

felicità(?!\S)

(または提案された@Sniffer\Wの代わりに、リスクを冒して次のようなものに一致させます:)\sfelicitàà

于 2013-10-17T13:04:11.050 に答える
1

次の代替手段を試してください。

\b(emozioni|gioia|felicità)(?=\W|$)

\Wこれらの単語のいずれかの後に単語以外の文字または end-of-stringが続く限り、これはリストされた単語のいずれかに一致します$

正規表現101のデモ

于 2013-10-17T13:03:33.433 に答える