3

ルビー1.8でユニコード対応の正規表現を取得するために鬼車ジェムを使用しています。\p{M}構文のドキュメントによると、コード ポイントを Mark プロパティと使用または\p{Mark}一致させることができるはずです。

ただし、次のことを行うと

ORegexp.new '\p{M}',
            :options => OPTION_MULTILINE | OPTION_SINGLELINE | OPTION_IGNORECASE | OPTION_EXTEND,
            :syntax => SYNTAX_JAVA, # so we can use character properties
            :encoding => ENCODING_UTF8

私は得るArgumentError: Oniguruma Error: invalid character property name {M}{Mark}を使用した場合、または をサポートする他の構文のいずれかを使用した場合、同じエラーが発生します\p

私は何を間違っていますか?鬼車正規表現を使用して有効な文字プロパティを指定するにはどうすればよいですか?

更新 - UTF16 エンコーディングのいずれかを使用すると、正規表現がコンパイルされます。しかし、私の文字列はUTF8であるため、役に立ちません。だから私の質問は次のようになります: UTF-8鬼車正規表現を使用して有効な文字プロパティを指定するにはどうすればよいですか?

4

1 に答える 1

0

使ってみて

/\p{Mark}

古い Ruby ブログで、スラッシュを使用すると「文字列のエンコーディングとして値を見つけようとする」ことを読んでいました

http://www.ruby-forum.com/topic/154384

于 2012-10-18T19:15:38.230 に答える