2

-w(e)grepを使用して、スイッチを使用して単語全体を照合したいと思います。ロケールを設定しましたが、アクセント付きの文字は次の例のように単語の境界として扱われます。

$ locale
LANG=es_VE.utf8
LC_CTYPE="es_VE.utf8"
LC_NUMERIC="es_VE.utf8"
LC_TIME="es_VE.utf8"
LC_COLLATE="es_VE.utf8"
LC_MONETARY="es_VE.utf8"
LC_MESSAGES="es_VE.utf8"
LC_ALL=es_VE.utf8

$ echo -e "cáñamo\namo" | egrep -w amo
cáñamo
amo

amo無視しながらどうやって見つけることができますかcáñamo

4

1 に答える 1

1

どのコードポイントが単語クラスの文字としてカウントされるかは、Unicodeではロケールに依存せず、LATIN SMALL LETTER N WITH TILDE常に単語文字です。

amoこれは、単語境界の後と非(単語境界)の後の検索を示すすべてUTF8ワークフローです。

 $ perl -Mutf8 -CSDA  -e 'print "cáñamo\namo\n"' | 
   perl -Mutf8 -CSDA -ne 'print if /\bamo\b/'
 amo

 $ perl -Mutf8 -CSDA  -e 'print "cáñamo\namo\n"' | 
   perl -Mutf8 -CSDA -ne 'print if /\Bamo\b/'
 cáñamo

検索文字列の選択に面白がって仕方がありません。笑ってくれてありがとう。

于 2012-02-13T14:05:05.290 に答える