現在ユニコード文字列の正規表現を使用していますが、ASCII文字と一致させるだけですべてのユニコード文字を無視し、regex.hの関数はうまく動作しますlinuxので、エンコーディングはutf8です)。しかし、誰かがそのようにするのが本当にOKかどうかを確認できますか?または、ユニコードで正規表現ライブラリが必要ですか(ICUのように)正規表現をC言語のユニコード文字列で使用しています
0
A
答えて
2
UTF-8 is a variable length encoding;いくつかの文字は1バイト、いくつかは2、その他のものは3または4です。今では、各文字の接頭辞によって読み込むバイト数が分かります。 1バイトは0、2バイトは110、3バイトは1110、4バイトは11110である。
UTF-8文字列をASCIIや他の固定幅のコードとして読み取ろうとすると、物事は非常に間違っています... UTF-8文字列には1バイト文字だけが含まれていなければASCII。
しかし UTF-8にはバイトはNULLバイトが含まれていない、と余分なバイトはいずれもASCIIと混同することはできない、とあなたが本当に唯一のASCIIに一致している場合、あなたはを取得することができるかもしれませんので、 POSIXよりも優れた正規表現オプションがあるので、使い方が簡単で、後で取り上げるためにコードに隠されたエンコード爆弾を残すのはなぜですか?代わりに、Perl Compatible Regular Expressions(PCRE)のようなUnicode対応の正規表現ライブラリを使用してください。 フラグをpcre2_compile
に渡すことにより、PCRE is Unicode awareに変更します。 PCRE正規表現構文はPOSIX正規表現よりも強力で広く理解されており、PCREはより多くの機能を備えています。 PCRE comes with Gnome Libそれ自体は非常に便利なCの機能の饗宴を提供します。
関連する問題
- 1. ユニコード文字列の正規表現
- 2. 任意の言語の単語文字用正規表現
- 3. 多言語文字列の正規表現
- 4. Python正規表現でユニコード文字列を正しく使う方法
- 5. 正規表現を使用しない文字列の単語数ですか?
- 6. 正規表現を使った正規表現を使用した文字列
- 7. 使用正規表現は、文字列
- 8. C++は正規表現を使用して文字列をトークン化します
- 9. 正規表現を使用してC#で文字列を操作する
- 10. 正規表現を使用して文字列をパースする
- 11. Posixの正規表現がC言語で動作しない
- 12. 正規表現文字列
- 13. 正規表現を使用してPHP分割文字列
- 14. CountVectorizerを使用してスペースのないユニコード文の正規表現
- 15. C#、正規表現または文字列分割を使用して文字列を抽出する
- 16. 正規表現を使用してCの文字列内の単語を抽出する
- 17. 文字列Javaで正規表現を使用して分割しますか?
- 18. マスク正規表現を使用して文字列内の代替文字を
- 19. 文字列で正規表現するか、文字列で正規表現しないか?
- 20. Pythonの正規表現で文字列から単語をキャプチャ
- 21. Jenkinsの正規表現の正規表現文字列パラメータプラグイン
- 22. パンダの正規表現を使用して文字列をスクラブします
- 23. 有効な正規表現の正規表現文字列
- 24. 正規表現を使用して長い文字列の単語「19XX」または「18XX」を検索するJavaScript
- 25. 文字列または正規表現のリテラルにない正規表現と一致する正規表現
- 26. SEDで2つの正規表現文字列を使用
- 27. 正規表現を使用して文字列を除外しますか?
- 28. 正規表現正規表現一致文字列
- 29. 正規表現を使用して文字列から別の単語に単語を削除する方法
- 30. PHPで正規表現を使用して文字列の一部を返す
UTF-8は、非ASCII文字をASCII文字と決して符合しないようにエンコードします。そのため、すべての文字を検索または照合すると安全です。もちろん、私が言ったように、誰かが私が間違っていると言って来るだろう - 私は反例を歓迎する。 –