From: Hiroshi Nakamura Date: 2011-09-23T20:52:21+09:00 Subject: [ruby-list:48390] Re: splitの正規表現を改善したい -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 (2011/09/23 20:17), masayoshi takahashi wrote: >> ちょっと今手元に「詳説 正規表現」がないので理屈がいえないのですが(つ まり身についてない)、エスケープ時のパターンとしては >> >> /\{(?:[^\}\\]+(?:\\.[^\}\\]*)*)\}/ >> >> だったはずです。 > > む、こういう書き方もあるんですね。 > >> pat = [^区切り文字\\] >> >> として、 >> >> pat+(\\.pat*)*区切り文字 >> >> 最初のpat+で食えるだけ食っとくとお得、というのは変わりませんが。 > > と思ったのですが、これって先頭にエスケープ要素(ここでは「\}」など)を 許さないパターンにならないでしょうか? 「{\}foo}」な > どはマッチしたい 文字列なので、これは許せるようにしたいです。 すいません、おっしゃるとおりで+じゃなくて*じゃないといけませんでした。 まず食えるだけ食う、ということには変わりません。「詳説 正規表現」初版 第一刷「5章 正規表現を工夫する」のp.180だと 「開始 通常要素* (特殊要素 通常要素*)* 終了」 との書き方になっています。初版第一刷とか、前世紀なので、ページ数は大き く変わっていると思います。 高橋さんの作られていた元のパターンから、どうしてこのような正規表現に変 形していくか、書かれています。 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (Cygwin) iQEcBAEBAgAGBQJOfHGMAAoJEC7N6P3yLbI2xR0IANP+PiJtqqbRK9DVv6Lebm3A w2zk+esUoxBZxWCjfC1FbIAdHSqwovNpPRZp/K787Dmb3M4sYYL98nmBEXUMBEn1 8tx3MlV5zTCC7SJ1AG7Hhtaa8M7ZVMX2a5rRPn3ZveJiJPZCeRZQWoU4iovcOMwa sCNm2RZ63KdM/3mvfekBF9UKiTCtN/rIyI4V9FhGdZdhhJqFldpRQA3913hnPCGy GmGIJSNm6X0ZXjxpptxHusUkIUT3lGssMaNdPt7lO8mqAlYjm6B4q5iLHU0VQq3V 7PFa3/RM8HHokcDff3dhVK2hdj1VfKeW+h3+fYjFet82fxmY4U62SnxSVUW1R+I= =H4EA -----END PGP SIGNATURE-----