在 Visual Studio 2013 中,我可以找到如下标签:
<div class="old-title">Different Title for every page</div>
使用
(?i)<div class=(\"old-title\").(?i)(.+?)./div[^>]*>
替换为
<div class="title">$2</div>
我需要搜索并查找多行
<div class="class1">
<div class="class2"></div>
<div class="title">Different Title for every page</div>
</div>
并仅替换为单个 div 标题:
<div class="title">$2</div>
最佳答案
hshobby,如果我理解的话,你的问题是关于底部的多行替换。这是你想要的? (如果还需要捕获标题,这是一个简单的调整。)
搜索:
(?is)<div class="class1">[\s\r\n]*<div class="class2"></div>[\s\r\n]*<div class="title">([^<]+)</div>[\s\r\n]*</div>
替换:
<div class="title">$1</div>
如果是这样,这里与您原来的表达有一些差异。首先,我们允许点匹配换行符,以便正则表达式可以跨越多行。这就是(?s)
做。由于您稍后打开了不区分大小写的模式 (?i)
,把它放在前面看起来更干净:(?is)
这里重复的一个部分是 [\s\r\n]*
字符类,它会占用所有空格和换行符,使我们能够到达您尝试匹配的字符串的下一部分。
最后,标题本身与 [^<]+
匹配并捕获。其中表示一个或多个不是 <
的字符,允许我们消耗 </div>
之前的所有字符如果标题可以为空,则替换 [^<]+
与 [^<]*
输入:
<div class="class1">
<div class="class2"></div>
<div class="title">Hi there hsHobby</div>
</div>
输出:
<div class="title">Hi there hsHobby</div>
关于html - 在 Visual Studio 2013 或 2010 中查找并替换多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23192845/