我想替换文件中的标准字符串,而另一个是正则表达式的结果。标准文本如下:
<xsl:variable name="ServiceCode" select="###"/>
我想将###替换为一个服务代码,稍后我会在同一个文件中找到该网址:
<a href="/Services/xyz" target="_self">
正则表达式(?<=\/Services\/)(.*)(?=\" )
返回所需的服务代码“xyz”。
所以,我打开了Notepad ++,将“###”添加到“查找内容”,将此RegEx添加到“替换为”部分,并期望###
文本将被{{1}替换}。
但我得到了这个结果:
xyz
我是RegEx的新手,我需要在替换部分使用不同的语法,而不是用来查找字符串吗?有人能给我一个提示如何达到要求的结果吗?目标是标准化大量具有类似结构的文件,因为现在所有服务代码都在文件的几个位置进行了硬编码。感谢。
答案 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。