2
Source:    <prefix><content1><suffix1><prefix><content2><suffix2>
Engine:    PCRE

RegEx1:    (?<=<prefix>)(.*)(?=<suffix1>)
RegEx2:    (?<=<prefix>)(.*)(?=<suffix2>)

Result1:   <content1>
Result2:   <content1><suffix1><prefix><content2>

RegEx2 の望ましい結果は単なる <content2> ですが、明らかに貪欲です。RegEx2 を非貪欲にし、最後に一致した後読みのみを使用するにはどうすればよいですか?

[これを NoteTab 構文から正しく翻訳したことを願っています。正規表現コーディングはあまりしません。<prefix>、<content>、および <suffix> という用語は、任意の文字列を表すことを意図しています。「?<=」後読みコマンドの「<」のみが重要です。]

簡単なことだと思いますが、何時間も検索した後、自分で解決することをあきらめています。

助けてくれてありがとう

美術

4

3 に答える 3

5

私はあなたが使用することをお勧めします:

(?<=<prefix>)(((?!<prefix>).)*)(?=<suffix2>)

<prefix>これにより、マッチ内に何も存在しないことが保証されます。完全な試合結果は<content2>

于 2009-08-05T10:16:53.680 に答える
4

私はちょうど同じ問題を抱えていました。でも私の場合はそうでした

(?<=<prefix>)(?:.(?!<prefix>))*(?=<suffix>)

それは私が望んでいたことをしました。

<prefix>この式は、との間の文字の連結で<suffix>あり、部分文字列 を含まないものすべてに一致し<prefix>ます。(そう思います。正規表現は苦手です。)

于 2010-03-27T01:28:07.320 に答える
4

その前に貪欲なものを置きますか?

(?:.*)(?<=<prefix>)(.*)(?=<suffix2>)

貪欲(?:.*)は可能な限り貪欲になるため、パターンの残りの部分と最小値のみが一致し、残りは貪欲でなくなります。

貪欲で.*?ないものも機能する可能性があります。

(?<=<prefix>)(.*?)(?=<suffix2>)
于 2009-08-05T09:57:28.947 に答える