正規表現の略記法 \X
Unicodeのテキストをperlなどで正規表現で処理する場合任意の一文字は.でなく\Xを使うべきなんでしょか。つまりà(\x{0061}\x{0300})みたいな文字とかIVSとかを考慮。(これは多分ものかの先生に聞くべき@monokano )
2014-07-11 11:53:46@akane_neko ぉぉぉ「\X」知らなかった! 試してみると確かに結合文字も含んでちゃんとマッチしますね。 「Grapheme Cluster」のすべてにマッチするわけではなさそうですけど、ほとんど問題なさそう。これはイイ!
2014-07-11 12:23:09@monokano 「正規表現クックブック」に載ってました!「\XはUnicode版の.」って書いてあります。…でも\Xつかって正規表現書いたのを他の人が読む時「なんだこれ?わからない」ってなりそうだなーと思って。任意の一文字は.ってあまりにも身に染み付いちゃってる(笑)
2014-07-11 12:27:06@akane_neko @monokano \Xしらなかった! \p{xx}で種類もいろいろ指定できるみたいですね。
2014-07-11 12:31:12@wakufactory @monokano \P{M}\p{M}(\p{M}はユニコードプロパティ 他の文字と組み合わせることが前提になっている文字)だとà(\x{0061}\x{0300})はマッチするけどIVSがひっかからなかったです…。
2014-07-11 12:32:38@wakufactory @monokano あ!違った!今もう一度テストしたら大丈夫だった!\P{M}\p{M}でマッチしました!
2014-07-11 12:33:49@akane_neko @monokano 『詳説 正規表現』の3.3.3.1にも触れてありました。PerlとPCRE、pregがサポートしているとのこと。PCREってことは、ものかのさんの浮紙(IVS Checker)でも使えるんですね。
2014-07-11 12:36:06@akane_neko @wakufactory @mori_taksi このあたりブログに書いとこ。(詳しい人がコメントでさらに教えてくれるかもw)
2014-07-11 12:44:10Unicodeにおける「1文字」の概念は規格本文の2.11節と、UAX#29 の "extended_grapheme_cluster" を参照。一応、正規表現も定義されている。
2014-07-11 12:52:41@akane_neko @monokano @wakufactory @mori_taksi し・・知らなかった。フクロウ本とっとと読破せねば。
2014-07-11 12:55:37@akane_neko @monokano @wakufactory @mori_taksi 正規表現やっぱり深いなー。
2014-07-11 12:56:27@JunTajima @monokano @wakufactory @mori_taksi (じつは「詳説 正規表現」の方は持ってないんだよね…買うべきか)
2014-07-11 12:56:45@akane_neko @monokano @wakufactory @mori_taksi オライリー公式でpdf版も出てますよ。
2014-07-11 12:57:29@JunTajima @monokano @wakufactory @mori_taksi (PDFだと目が滑って読めない。やっぱ紙。)
2014-07-11 12:58:18@akane_neko @monokano @wakufactory @mori_taksi 紙のは何冊も持ち歩けないので。まあでも紙版にPDFダウンロード権付けてくれたらそっち買うかな。
2014-07-11 13:00:56@akane_neko @monokano @wakufactory @mori_taksi なるほど、InDesignの正規表現置換で使ってみましたけど、「.」だと改行文字にはマッチせず、「\X」だと改行文字にもマッチしますね。そこだけでも使い分けると便利そう。
2014-07-11 13:15:59@JunTajima @monokano @wakufactory @mori_taksi あー、確かに\Xだと改行も一文字としてみるんですね。.は改行を含まない。
2014-07-11 13:19:15@akane_neko @JunTajima @monokano @mori_taksi 修飾子sをつけると.も改行含むようにできますけどね
2014-07-11 13:20:31@wakufactory @akane_neko @monokano @mori_taksi InDesignの検索置換パレットにはその辺の機能は無いのですw pic.twitter.com/J8vD9XvsdJ
2014-07-11 13:22:22@wakufactory @JunTajima @monokano @mori_taksi 逆に\Xをつかって「改行を含まない」様にしたいときは…?
2014-07-11 13:25:08@akane_neko @wakufactory @JunTajima @monokano (?!\r)\X でどうでしょ?
2014-07-11 18:09:24@akane_neko @wakufactory @JunTajima @monokano 『詳説 正規表現』(第3版)の3.4.2.8の最後に書いてあるのを参考にしました。
2014-07-11 18:12:16