【问题标题】:Find and replace multiple lines in Visual Studio 2013 or 2010在 Visual Studio 2013 或 2010 中查找和替换多行
【发布时间】:2014-04-21 07:23:04
【问题描述】:

在 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>

【问题讨论】:

  • 这是您要找的吗? stackoverflow.com/questions/1732348/…
  • @hshobby 我修正了一个错字(匹配文字“不同的标题”—duh)并添加了解释。现在应该可以工作了,请告诉我。

标签: html regex visual-studio-2010 replace visual-studio-2013


【解决方案1】:

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]* 字符类,它会占用所有空格和换行符,使我们能够到达您尝试匹配的字符串的下一部分。

最后,标题本身与[^&lt;]+匹配并捕获,它表示一个或多个不是&lt;的字符,允许我们消耗&lt;/div&gt;之前的所有字符如果标题可以为空,则替换@ 987654330@与[^&lt;]*

输入:

<div class="class1">
                        <div class="class2"></div>
                        <div class="title">Hi there hsHobby</div>
                    </div>

输出:

<div class="title">Hi there hsHobby</div>

【讨论】:

  • 嗨@zx81 .. 抱歉我不在了.. 是的,它对我有用.. 谢谢
猜你喜欢
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2016-09-15
  • 2015-08-06
  • 2017-06-25
  • 2010-10-23
  • 1970-01-01
相关资源
最近更新 更多