« centos で hhmv hiphop-php を起動し wordpressを動作させるまで | メイン | C++をかじってみる »

2013年10月15日

正規表現 文字列を含まない文字列を検索

ふぅ やっとわかった・・・・・

参考
http://d.hatena.ne.jp/a_bicky/20100530/1275195072

hoge123fugehoge23442342fuge という文字列があって hoge~fuge のセットを取得したいとき困った。

preg_match_all('/hoge(.*)fuge/','hoge123fugehoge23442342fuge');

とすると、正規表現はできるだけ大きく合致する部分を調べるので
文脈全体が合致してしまう。

そこで、、、、正規表現の先読み・後読みが出てくる

(?=pattern)  patternが出てくる前の位置に合致(肯定的先読み)
(?!pattern)  肯定的先読みで合致するポイント以外

(?<=pattern)  patternが出てくる後の位置に合致(肯定的後読み)
(?


つことで以下のようになりました。


preg_match('/hoge((.(?!fuga))*)(.(?=fuga))/', 'hogefugahogefuga',$match)

hoge が最初にあって
fugaが直後にある文字以外の連続
最後にfugaが直後にある1文字

投稿者 muuming : 2013年10月15日 15:29

コメント

コメントしてください




保存しますか?