Notepad ++用RegEx搜索结果替换文本

时间:2016-11-15 17:08:06

标签: regex notepad++

我想替换文件中的标准字符串,而另一个是正则表达式的结果。标准文本如下:

<xsl:variable name="ServiceCode" select="###"/>

我想将###替换为一个服务代码,稍后我会在同一个文件中找到该网址:

<a href="/Services/xyz" target="_self">

正则表达式(?<=\/Services\/)(.*)(?=\" ) 返回所需的服务代码“xyz”。

所以,我打开了Notepad ++,将“###”添加到“查找内容”,将此RegEx添加到“替换为”部分,并期望###文本将被{{1}替换}。 但我得到了这个结果:

xyz

我是RegEx的新手,我需要在替换部分使用不同的语法,而不是用来查找字符串吗?有人能给我一个提示如何达到要求的结果吗?目标是标准化大量具有类似结构的文件,因为现在所有服务代码都在文件的几个位置进行了硬编码。感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用lookahead作为前面部分的capturing

搜索:(?s)###(?=.*/Services/([^"]+)")并替换为:$1

  • (?s)使点也匹配换行符(np ++中也有一个复选框)
  • [^"]character that is not "
  • 相匹配

替换$1对应于第一个带括号的子模式的捕获。

答案 1 :(得分:0)

我不是RegEx的专家,但我想我可以提供帮助。看起来你可能会以错误的方式行事。您正在使用的正则表达式搜索通常如下所示:

RegEx中的括号()允许您选择部分搜索并在替换部分中使用该部分。

您将(?<=\/Services\/)(.*)(?=\" )放入&#34;查找内容&#34; Notepad ++中的部分。

然后在&#34;替换为&#34;您可以使用\1\2\3部分将搜索内容替换为(?<=\/Services\/)(.*)或{{1}中的搜索内容分别搜索。

根据文件的结构,您需要使用RegEx搜索来选择两行代码(以及您需要的特定部分),然后使用(?=\" )等组合来完全替换所有内容它是怎样的,除了###,你可以用与\1\2\3相关联的\number替换它。

有关详细信息,请参阅http://docs.notepad-plus-plus.org/index.php/Regular_Expressions