[#48382] Ruby/Gstreamer for Windows — ashbb <ashbbb@...>

こんにちは。

17 messages 2011/09/22
[#48383] Re: Ruby/Gstreamer for Windows — Kouhei Sutou <kou@...> 2011/09/23

須藤です。

[#48385] Re: Ruby/Gstreamer for Windows — ashbb <ashbbb@...> 2011/09/23

須藤さん

[#48392] 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...>

前略

21 messages 2011/09/24
[#48393] Re: 要素のない配列の挙動? — TADA Tadashi <t@...> 2011/09/24

ただただしです。

[#48394] Re: 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...> 2011/09/24

ただただし さん

[#48399] Re: 要素のない配列の挙動? — nonta@... 2011/09/24

野田と申します。

[#48400] Re: 要素のない配列の挙動? — 俊(とし) <toshio.otaguro@...> 2011/09/24

皆さま

[ruby-list:48387] Re: splitの正規表現を改善したい

From: Hiroshi Nakamura <nahi@...>
Date: 2011-09-23 06:37:34 UTC
List: ruby-list #48387
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

(2011年9月23日 14:38:27), masayoshi takahashi wrote:
>>> str = "{abcabcabcabcabcabcabcabcabcabc" words =
>>> str.split(/(\{(?:[^\}\\]+|\\.)*?\})/, -1) p words
>>> 
>>> 正規表現の書き方がよくないと思うのですが、どう書くと効率的に 実行できるのでしょうか。
>> 
>> +や*のネストはマッチに失敗したときに大量のトラックバックを発生さ せます。この場合は+をなくせばいいはずです。
> 
> おおお、確かに+が不要でした! 修正したところ、これで問題なさそうです。どうもありがとうございました。

ちょっと今手元に「詳説 正規表現」がないので理屈がいえないのですが(つ
まり身についてない)、エスケープ時のパターンとしては

  /\{(?:[^\}\\]+(?:\\.[^\}\\]*)*)\}/

だったはずです。

  pat = [^区切り文字\\]

として、

  pat+(\\.pat*)*区切り文字

最初のpat+で食えるだけ食っとくとお得、というのは変わりませんが。

みんながハマる、そして覚えると便利なイディオムなので、なんか専用メソッ
ドにしたほうがいいんだろうなあと思いつつ。
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (Cygwin)

iQEcBAEBAgAGBQJOfCj/AAoJEC7N6P3yLbI2+SoIAK91ZLVwxdDFL9lEc8vwuu73
JPZ/zHWOByDptNuCOsx0H+zUnSxvK3hd/VcVs6GvTA/LllxQ1F3scrYukn3+bDub
Ztt2XvwScSxiY2OjAHQocdRCGm3KehkYFMi4pzIdgEAr33hx1iqJ0uTxptivWJUk
4NMN5GHh8as1yx2sZS+FFuzdWYc0P86V9ZOd1xnro4Ahotsn4jkDPvnQxnIfzaO4
hQEo+StR5oFLoAM7rkf7jOFTE71AzIcve+M4hT4axkr/QNx6KpOWUTi4iJvd0Jz6
V497Y+EVImhhLHjXWM+V/sTMBCafMd9eB06vhqZsDfLSrLW0QXXwUsVKXftfRQ0=
=fLIP
-----END PGP SIGNATURE-----

In This Thread