1

正規表現の\wが国別文字を通常の文字と同じように扱うようにするにはどうすればよいですか?

'ein grüner Hund'.scan(/\S+/u)

["ein"、 "grüner"、 "Hund"]

「ü」を非空白文字として正しくスキャンします。

'ein grüner Hund'.scan(/\w+/u)

["ein"、 "gr"、 "ner"、 "Hund"]

どうやって「ü」も手に入れますか?

ドイツ語、フランス語、ポーランド語の文字だけでなく、解決策も必要です。

4

2 に答える 2

2

\w文字、数字、またはアンダースコアで機能します。正規表現エンジンは、1 つの Unicode コード ポイントを 1つの文字と見なしている可能性があります。その場合、üは複数のコード ポイント文字 (2 つのコード ポイントとしてエンコードされる)であるため、単一の文字として一致しません。複数のコード ポイント文字を照合する場合も、\Xそれが単一のコード ポイントであるか複数のコード ポイントであるかにかかわらず、単一の Unicode 書記素に一致する which を使用します。

詳細については、これを確認してください。

Ruby が をサポートしているかどうかはわかりません\X。それ以外の場合\p{L}\p{M}*は、アクセント付きの文字に一致するものを使用できます。

于 2013-02-13T11:01:22.683 に答える
2

試す

'ein grüner Hund'.scan(/[[:word:]]+/u)

ドキュメンテーション

于 2013-02-13T11:01:36.767 に答える