Rubyでscanで使ったりする\p{Word}ってなにか

Rubyで正規表現を使ってscanを使ってるコードで

"I my me mine 1 2 3 4".scan(/w+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

と文字列を配列に分割できますが

"I my me mine 1 2 3 4".scan(/p{Word}+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

でもできます
\p{Word}ってなんだと思って調べました

ドキュメントによるとUnicode プロパティによる文字クラス指定らしいです
正規表現

これ
Onigmo/UnicodeProps.txt at master · k-takata/Onigmo
に書いてあるものは使えるそうです

str = "I my me mine 1 2 3 4"
p str.scan(/p{Word}+/)
# ["I", "my", "me", "mine", "1", "2", "3", "4"]
p str.scan(/p{Digit}+/)
# ["1", "2", "3", "4"]
p str.scan(/p{Upper}+/)
# ["I"]

と他にも使えそうなのがあります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください