« 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