ここでの他の回答は、貪欲でないマッチングをサポートする正規表現エンジンを持っていることを前提としています。これは、Perl 5 で導入され、他の最新の言語に広くコピーされた拡張機能です。しかし、それは決して遍在しているわけではありません。
多くの古い、またはより保守的な言語とエディターは、繰り返し演算子の貪欲さを制御するメカニズムを持たない従来の正規表現のみをサポートします。これは*
、常に可能な限り長い文字列に一致します。
その場合の秘訣は、最初に一致できるものを制限することです。あなたの代わりに.*
探しているようです
[^>]*
これは、可能な限り多くのものに一致します。しかし、何かは単に.
「任意の文字」ではなく、「そうでない任意の文字>
」です。
アプリケーションによっては、「任意の文字」に改行を含めることを許可するオプションを有効にしたい場合と無効にしたい場合があります。
正規表現エンジンが貪欲でない一致をサポートしている場合でも、実際に何を意味するかを詳しく説明することをお勧めします。これがあなたの言いたいことである場合、貪欲ではない一致に頼って (できれば、おそらく) Do What I Mean を行うのではなく、おそらくこれを言うべきです。
たとえば、ワイルドカード like の後に末尾のコンテキストを持つ正規表現は、末尾のコンテキスト(ここでは)が見つかるまで.*?><br/>
ネストされたものを飛び越えます。明示的に改行を禁止する) 明らかにそれはできませんし、しません。>
><br/>
>
[^>]*><br/>
[^\n>]*><br/>
もちろん、 に対処する必要がある場合、これはまだあなたが望むものではありません<img title="quoted string with > in it" src="other attributes"> and perhaps <img title="nested tags">
が、その時点で、最初に言ったように正規表現を使用することを最終的にあきらめるべきです。