From: KANEKO Seiji Date: 2005-10-27T17:03:39+09:00 Subject: [ruby-list:41407] Re: 全角スペースを区切りとした文字列分解で 金子です。 複雑なのも好きですが、簡単なのはもっと好きです。 On Thu, 27 Oct 2005 16:18:55 +0900 中村 英夫 wrote: >  本当にやりたいことは、次のような条件で文字列を分解すること > です。 >   ・区切り文字は[ \t\r\n\f ] # 最後は全角スペースです >     ->ですので、るびきちさん方式はそのままでは流用できそ >      うにありません。 >   ・全角及び半角の()<>[]「」{}【】内の上記区切り文 >    字は区切りとしない >   ・()等のパターンは0以上の任意回出現する ワタシの案で愚直に括弧のパターンを増やしてみました。ついでに /x を使って、 可読性の改善を試みました。全角スペースは真ん中の1つだけです。 # めちゃくちゃ長くなってすみません… $ ruby -Ke -e 'p "あい(う え)お かき".split(/ (?! [\[<<「{{【\((]+ [^\]>>」}}】\))]* ) [\s ]+ (?! [^\[<<「{{【\((]* [\]>>」}}】\))]+ ) /x)' ["あい(う え)お", "かき"] $ ruby -Ke -e 'p "あい{う え}お かき".split(…)' ["あい{う え}お", "かき"] $ ruby -Ke -e 'p "あい【{う え}】お かき".split(…)' ["あい【{う え}】お", "かき"] こういうことでしょうか?ちなみに、 $ ruby -Ke -e 'p "あい【{う え})お かき".split(…)' ["あい【{う え})お", "かき"] こういうのにもマッチしてしまいます (^^; -- 金子誠司 (KANEKO Seiji) GnuPG Fingerprint = 0E77 26A2 BBEE 0D35 098D 2E0C 2FE2 A4DC D383 313C