3

次のパターンを抽出する正規表現を作成します。

  • "çççoookkk gggüüüzzzeeelll" (トルコ語の文字 "ç" と "ü" で vvveeerrryyy gggoooddd を意味します)
  • "ccccoookkk ggguuuzzzeeelll" (同じ意味ですが、英語の文字 "c" と "u" を使用)

これが私が試している正規表現です。

  • "\b[çc]+o+k+\sg+[üu]+z+e+l+\b": これは英語では機能しますが、トルコ語の文字では機能しません
  • "çok": "çok" を検索しますが"ç+o+k+"、"çççoookkk" で機能しない場合は、"çoookkk" を検索します
  • "güzel": "güzel" を検索しますが、試してみると"g+ü+z+e+l+""gggüüüzzzeeelll" では機能しません
  • "\b(c+o+k+)|(ç+o+k+)\s(g+u+z+e+l)|(g+ü+z+e+l+)\b": 正しく動作しません
  • "[çc]ok\sg[uü]zel": 「çok güzel」パターンを取得するためにこれも試しましたが、どちらも機能しません。

問題は、トルコ語の文字で正規表現演算子を使用している可能性があると思います。どうすればこれを解決できるかわかりません。

http://www.myregextester.comを使用して、正規表現が正しいかどうかを確認しています。

私は PHP プログラミング言語を使用して、Twitter Rest Api を介して検索されたツイートから特定のパターンを取得しています。

ありがとう、

4

1 に答える 1

4

使用しているプログラミング言語を指定していませんが、それらの多くでは、\b文字クラスはプレーン ASCII エンコーディングでのみ使用できます。

内部的にはとセット\bの境界として処理されます。 次に、に等しいです。\w\W
\w[a-zA-Z0-9_]

ファンシー スペース マークを使用していない場合 (使用すべきではありません)、通常の空白文字クラス ( \s) の使用を検討してください。

使い言語\b. "ascii"と表示されている場合は、そうではありません。

補足として、プログラミング言語によっては、国別文字の代わりに直接 Unicode コード ポイントを使用することを検討することもできます。

参照: javascript の utf-8 単語境界正規表現

参考文献:

于 2013-05-16T08:47:09.423 に答える