正規表現言語は、\B を使用して A..Z、a..z、0..9、および _ を含め、\b は単語境界として定義されます。
á、í、ó、é、ñ などの文字を含むすべての有効なスペイン語単語に一致する正規表現を作成するにはどうすればよいですか?
私は.NETを使用しています。
スペイン語ロケールを使用し、正規表現をロケール依存にします。
正規表現システムには、正規表現をロケールに依存させるために、Python のre.L
(別名re.LOCALE
) と同等のものを用意する必要があります。これにより、「単語の境界」などと同様に、単語の文字であり、ロケールによって変化しないものがあります。代わりに、とにかく問題を強制しようとして、ロケールをサポートしていない特定の正規表現システムを補う方法...?
これは、使用している言語 (および正規表現エンジン) に大きく依存します。
Perl では、\w
言語やアルファベットに関係なく、すべての単語の文字に一致し、/\b(\w+)\b/
(おそらく) のようなものは、英語の単語やロシア語の単語だけでなく、スペイン語の単語にも一致します。
PCRE を使用する言語では\w
(したがって、おそらく\b
) は Unicode 文字と一致しません。おそらく、独自のセットを作成する必要があります。[\wáéíóúñ]
(すべての単語文字に加えて、必要なアクセント付き文字に一致する) のようなものをお勧めします。これが機能する前に、PCRE ライブラリを Unicode サポートで事前に構築する必要があります。
他のものを使用している場合は、頑張ってください。一部の正規表現エンジンは Unicode をサポートしていません。