3

PREで始まりPREで終わる式を一致させようとしています。怠惰な一致を探しています。つまり、一致した式の終了PREは、開始PREの後に最初に見つかったものである必要があります。私は、RegExrでテストして、ネガティブな先読み正規表現でこれを達成しようとしていました。

正規表現:

PRE(\w|\s)+(?!PRE)

一致する式:

PRE erp PRE edas PRE

上記の式は、指定された正規表現と完全に一致しますが、PREerpPREとのみ一致すると予想していました。PREで始まりPREで終わる表現に怠惰に一致する正規表現を提案してください。

4

3 に答える 3

5

あなたの言語がレイジーマッチングをサポートしていると仮定します(ルックアラウンドをサポートしている場合は、レイジー数量詞もサポートしていると思います):

PRE(.*?)PRE

この答えは間違っているかもしれませんので、次回はあなたの言語を指定してください。正規表現には、言語ごとに異なる機能セットがあります。

于 2012-06-23T13:16:20.757 に答える
2
"(PRE)(.*?)(PRE)" 

これは私の(C#)コードで機能し、1つの一致PREerpPREを返します。

        var codeBlocks = Regex.Matches("PRE erp PRE edas PRE", "(PRE)(.*?)(PRE)", RegexOptions.IgnoreCase | RegexOptions.Singleline);
        MessageBox.Show("Matches found: " + codeBlocks.Count.ToString() + "\nMatch: " + codeBlocks[0].Value);
于 2012-06-23T13:23:23.990 に答える
2

これでうまくいくはずです:

(?<=PRE)(.+?)(?=PRE)

http://regexr.com?31bc5

于 2012-06-23T13:25:00.170 に答える