7

次のサイトを使用して PHP 正規表現をテストしているので、常にアップロードする必要はありません: http://www.spaweditor.com/scripts/regex/index.php

次の正規表現を使用しています。

/(.*?)\.{3}/

次の文字列 (何も置き換えない):

Non-important data...important data...more important data

preg_replace が返されます:

more important data

それでも私はそれが戻ることを期待しています:

important data...more important data

私は?貪欲でない修飾子です。何が起きてる?

4

2 に答える 2

10

貪欲でない修飾子は期待どおりに機能しています。ただし、(貪欲ではない)一致のすべてのpreg_match出現を置換テキスト(あなたの場合)に置き換えます。最初のものだけを置き換えたい場合は、オプションの 4 番目の引数 (制限) として関数に渡すことができます ( preg_replace の PHP ドキュメント)。リンクした Web サイトでは、「Flags」という単語と「limit」という単語の間にテキスト入力を入力することで、これを行うことができます。""1preg_replace1

于 2009-12-14T06:13:00.173 に答える
0

@Asaph ソリューションの実際の例です。この例では、カウントを指定できるため、貪欲でない必要はありません。行内で最初に出現する @ だけをマーカーに置き換えます

 $line=preg_replace('/@/','zzzzxxxzzz',$line,1);
于 2014-10-27T10:28:18.430 に答える