繁体   English   中英

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

[英]Notepad++ replace text with RegEx search result

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

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

我想将###替换为服务代码,稍后可以从该URL在同一文件中找到:

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

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

因此,我打开了Notepad ++,在“查找内容”中添加了“ ###”,在“替换为”部分中添加了此RegEx,并期望将###文本替换为xyz 但是我得到了这个结果:

<xsl:variable name="ServiceCode" select="?<=/Services/.*?=" "/>

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

你可以使用一个前瞻捕捉未来的一部分。

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

  • (?s)使点也与换行符匹配(np ++中还有一个复选框)
  • [^"]匹配的字符不是 "

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

我不是RegEx的专家,但我认为我可以提供帮助。 看来您可能会走错路了。 您正在使用的正则表达式搜索通常会像这样工作:

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

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

然后,在“替换为”部分中,可以使用\\1\\2\\3将搜索内容替换为(?<=\\/Services\\/)(.*)(?=\\" )分别搜索。

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

有关更多信息,请参见http://docs.notepad-plus-plus.org/index.php/Regular_Expressions

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM