我正在尝试匹配以 PRE 开头并以 PRE 结尾的表达式。我正在寻找一个惰性匹配,即匹配表达式中的结尾 PRE 应该是在起始 PRE 之后找到的第一个。我试图通过负前瞻正则表达式来实现这一点,在 RegExr 上进行测试:
正则表达式:
PRE(\w|\s)+(?!PRE)
要匹配的表达式:
PRE erp PRE edas PRE
上面的表达式与给定的正则表达式完全匹配,而我原本期望只匹配 PRE erp PRE。请建议一个延迟匹配以 PRE 开头和结尾的表达式的正则表达式。
我正在尝试匹配以 PRE 开头并以 PRE 结尾的表达式。我正在寻找一个惰性匹配,即匹配表达式中的结尾 PRE 应该是在起始 PRE 之后找到的第一个。我试图通过负前瞻正则表达式来实现这一点,在 RegExr 上进行测试:
正则表达式:
PRE(\w|\s)+(?!PRE)
要匹配的表达式:
PRE erp PRE edas PRE
上面的表达式与给定的正则表达式完全匹配,而我原本期望只匹配 PRE erp PRE。请建议一个延迟匹配以 PRE 开头和结尾的表达式的正则表达式。
假设您的语言支持惰性匹配(如果它支持环视,我想它也支持惰性量词):
PRE(.*?)PRE
由于此答案可能有误,请下次指定您的语言。正则表达式针对不同的语言具有不同的功能集。
"(PRE)(.*?)(PRE)"
这在我的(C#)代码中对我有用,返回一个匹配项,PRE erp PRE。
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);