我在c#中有一个正则表达式:
Regex oRegex_ = new Regex("<!-- #BeginEditable \"Body\"[^>]*>(.*)<!-- #EndEditable [^>]*>", RegexOptions.Multiline);
MatchCollection matches_ = oRegex_.Matches(contents);名为'contents‘的变量等于:
<!-- #BeginEditable "Body" -->First String<!-- #EndEditable --><!-- #BeginEditable "Extra" -->Second String<!-- #EndEditable -->目前它似乎没有抓住我需要的东西,那就是
'First String'相反,它抓住了
'First String<!-- #EndEditable --><!-- #BeginEditable "Extra" -->Second String<!-- #EndEditable -->'有人能帮我用正则表达式解决这个问题吗?:(
请注意:我将替换'Body‘成为一个变量,然后把它全部放在一个循环中,这样我就可以通过使变量等于'Extra’来提取'Second String‘。
发布于 2010-02-17 20:40:58
使用*?执行非贪婪捕获
<!-- #BeginEditable \"Body\"[^>]*>(.*?)<!-- #EndEditable [^>]*>另一种选择是捕获正确的字符(不是<,但如果您允许<s在您的身体中,这就不那么准确了):
<!-- #BeginEditable \"Body\"[^>]*>([^<]*)<!-- #EndEditable [^>]*>https://stackoverflow.com/questions/2280583
复制相似问题