正規表現の略記法 \X

ずっと前からあったのに認知度があまりに低い正規表現の略記法「\X」。あかねさんのツイートをきっかけに文字っ子談義が始まりました。 『詳説 正規表現』から用語の問題に移って、話題が正規表現から離れてきていますけど、貴重な記録として一緒にしておきます。
42
あかね @akane_neko

Unicodeのテキストをperlなどで正規表現で処理する場合任意の一文字は.でなく\Xを使うべきなんでしょか。つまりà(\x{0061}\x{0300})みたいな文字とかIVSとかを考慮。(これは多分ものかの先生に聞くべき@monokano )

2014-07-11 11:53:46
ものかの @monokano

@akane_neko ぉぉぉ「\X」知らなかった! 試してみると確かに結合文字も含んでちゃんとマッチしますね。 「Grapheme Cluster」のすべてにマッチするわけではなさそうですけど、ほとんど問題なさそう。これはイイ!

2014-07-11 12:23:09
あかね @akane_neko

@monokano 「正規表現クックブック」に載ってました!「\XはUnicode版の.」って書いてあります。…でも\Xつかって正規表現書いたのを他の人が読む時「なんだこれ?わからない」ってなりそうだなーと思って。任意の一文字は.ってあまりにも身に染み付いちゃってる(笑)

2014-07-11 12:27:06
wakufactory 🍥𝕏 @wakufactory

@akane_neko @monokano \Xしらなかった! \p{xx}で種類もいろいろ指定できるみたいですね。

2014-07-11 12:31:12
あかね @akane_neko

@wakufactory @monokano \P{M}\p{M}(\p{M}はユニコードプロパティ 他の文字と組み合わせることが前提になっている文字)だとà(\x{0061}\x{0300})はマッチするけどIVSがひっかからなかったです…。

2014-07-11 12:32:38
あかね @akane_neko

@wakufactory @monokano あ!違った!今もう一度テストしたら大丈夫だった!\P{M}\p{M}でマッチしました!

2014-07-11 12:33:49
窮狸校正所 @mori_taksi

@akane_neko @monokano 『詳説 正規表現』の3.3.3.1にも触れてありました。PerlとPCRE、pregがサポートしているとのこと。PCREってことは、ものかのさんの浮紙(IVS Checker)でも使えるんですね。

2014-07-11 12:36:06
ものかの @monokano

@akane_neko @wakufactory お~~ \P{M}\p{M} で「任意の結合文字列」にマッチする~~!

2014-07-11 12:36:56
ものかの @monokano

@mori_taksi @akane_neko 使えますよ~(浮紙でいろいろ試し中

2014-07-11 12:38:27
ものかの @monokano

@akane_neko @wakufactory @mori_taksi このあたりブログに書いとこ。(詳しい人がコメントでさらに教えてくれるかもw)

2014-07-11 12:44:10
ıɥɔıɐʇ ɐʇɐqɐʍɐʞ @kawabata

Unicodeにおける「1文字」の概念は規格本文の2.11節と、UAX#29 の "extended_grapheme_cluster" を参照。一応、正規表現も定義されている。

2014-07-11 12:52:41
Jun Tajima @JunTajima

@akane_neko @monokano @wakufactory @mori_taksi し・・知らなかった。フクロウ本とっとと読破せねば。

2014-07-11 12:55:37
あかね @akane_neko

@JunTajima @monokano @wakufactory @mori_taksi (じつは「詳説 正規表現」の方は持ってないんだよね…買うべきか)

2014-07-11 12:56:45
あかね @akane_neko

@JunTajima @monokano @wakufactory @mori_taksi (PDFだと目が滑って読めない。やっぱ紙。)

2014-07-11 12:58:18
Jun Tajima @JunTajima

@akane_neko @monokano @wakufactory @mori_taksi 紙のは何冊も持ち歩けないので。まあでも紙版にPDFダウンロード権付けてくれたらそっち買うかな。

2014-07-11 13:00:56
Jun Tajima @JunTajima

@akane_neko @monokano @wakufactory @mori_taksi なるほど、InDesignの正規表現置換で使ってみましたけど、「.」だと改行文字にはマッチせず、「\X」だと改行文字にもマッチしますね。そこだけでも使い分けると便利そう。

2014-07-11 13:15:59
あかね @akane_neko

@JunTajima @monokano @wakufactory @mori_taksi あー、確かに\Xだと改行も一文字としてみるんですね。.は改行を含まない。

2014-07-11 13:19:15
wakufactory 🍥𝕏 @wakufactory

@akane_neko @JunTajima @monokano @mori_taksi 修飾子sをつけると.も改行含むようにできますけどね

2014-07-11 13:20:31
Jun Tajima @JunTajima

@wakufactory @akane_neko @monokano @mori_taksi InDesignの検索置換パレットにはその辺の機能は無いのですw pic.twitter.com/J8vD9XvsdJ

2014-07-11 13:22:22
拡大
あかね @akane_neko

@wakufactory @JunTajima @monokano @mori_taksi 逆に\Xをつかって「改行を含まない」様にしたいときは…?

2014-07-11 13:25:08
窮狸校正所 @mori_taksi

@akane_neko @wakufactory @JunTajima @monokano 『詳説 正規表現』(第3版)の3.4.2.8の最後に書いてあるのを参考にしました。

2014-07-11 18:12:16
1 ・・ 4 次へ