• 締切済み

2つの正規表現の違いは?

次の正規表現を使った置換の違いがよく分かりません。 $strString="abcd<!--s_1-->うほほ<!--e_1-->efg"; echo preg_replace("/<!--s_1-->.*<!--e_1-->/","<!--s_1-->なんと<!--e_1-->",$strString); $strString="abcd<!--s_1-->うほほ<!--e_1-->efg"; echo preg_replace("/<!--s_1-->.*?<!--e_1-->/","<!--s_1-->なんと<!--e_1-->",$strString); .*  と .*? なんですが、どういったところで違いがでるのでしょうか?

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.3

>これなら違いが分かりました。直前のパターンの0回以上の繰り返しですね。 違います。

すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

> これなら違いが分かりました。直前のパターンの0回以上の繰り返しですね。 こっちじゃないかしら。 *? -> not greedily. http://perldoc.perl.org/perlre.html

参考URL:
http://www.google.co.jp/search?hl=ja&q=%27*%3F%27+%E6%9C%80%E7%9F%AD%E4%B8%80%E8%87%B4&lr=lang_ja
dv8hjkwf
質問者

お礼

最短一致記号ということになるのでしょうか。もっとも近い距離にあるものだけを対象にするという…。

すると、全ての回答が全文表示されます。
  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

その例だと違いはわからないかと。 $strString="abcd<!--s_1-->うほほ<!--e_1--><!--s_1-->うほほ<!--e_1-->efg"; これだと分かるかと思います。

dv8hjkwf
質問者

お礼

これなら違いが分かりました。直前のパターンの0回以上の繰り返しですね。 正規表現は、いつもつまづいてしまいます。

すると、全ての回答が全文表示されます。

関連するQ&A