1

http: //translate.google.com/#en|hi|バンガロールを使用して、バンガロールとインドのヒンディー語を取得しました。

しかし、vim に貼り付けると、最後の文字 र の前に区切りがあります。一致する単語に正規表現パターン/[^\p{L}\p{Nd}\p{Mn}_]/u
で preg_replace を使用しています。しかし、これは最後の文字を別の単語として扱っています。

これは私の入力文字列です。

$cleanedString = preg_replace('/[^\p{L}\p{Nd}\p{Mn}_]/u', ' ', $name);

しかし、私が得ている出力は मैनेजमेंट बंगल र です。ここで何が間違っていますか?問題は、貼り付けたテキストをvimがどのように処理したかから始まると思います。

4

1 に答える 1

3

この正規表現を試してください"/[^\p{L}\p{Nd}\p{Mn}\p{Mc}_]/u"

O記号 inは、inलौとは対照的に、余分な水平スペースを必要とします。unicode クラスは、非スペーシング マークのみに一致します。間隔マークを一致させるために使用します。すべての結合記号を一致させるために使用できます。aeमै\p{Mn}\p{Mc}\p{M}"/[^\p{L}\p{Nd}\p{M}_]/u"

regular-expressions.info/unicodeより

\p{M}または\p{Mark}: 別の文字と組み合わせることが意図されている文字 (アクセント、ウムラウト、囲むボックスなど)。

  • \p{Mn}または\p{Non_Spacing_Mark}: 余分なスペースを取らずに別の文字と組み合わせることが意図されている文字 (アクセント、ウムラウトなど)。
  • \p{Mc}または\p{Spacing_Combining_Mark}: 余分なスペースを占める別の文字 (多くの東洋言語の母音記号) と組み合わせることが意図されている文字。
  • \p{Me}または\p{Enclosing_Mark}: 文字を囲む文字が結合されます (丸、四角、キーキャップなど)。
于 2010-08-30T06:44:10.710 に答える