【发布时间】:2016-11-15 17:08:06
【问题描述】:
我想将文件中的标准字符串替换为正则表达式的结果。标准文本如下所示:
<xsl:variable name="ServiceCode" select="###"/>
我想将 ### 替换为服务代码,稍后我可以在同一个文件中通过以下 URL 找到该服务代码:
<a href="/Services/xyz" target="_self">
正则表达式(?<=\/Services\/)(.*)(?=\" )
返回所需的服务代码“xyz”。
所以,我打开了 Notepad++,在“查找内容”中添加了“###”,在“替换为”部分添加了这个 RegEx,并预计 ### 文本将被 xyz 替换。
但我得到了这个结果:
<xsl:variable name="ServiceCode" select="?<=/Services/.*?=" "/>
我是 RegEx 的新手,我是否需要在替换部分使用与查找字符串不同的语法?有人可以给我一个提示如何达到所需的结果吗?目标是标准化大量具有相似结构的文件,因为现在所有服务代码都在文件的多个位置进行了硬编码。谢谢。
【问题讨论】:
-
替换模式不接受正则表达式。尝试捕获代码并替换为 bac 引用。类似
(\s+name="ServiceCode"\s+select=")###("[\s\S]*?<a\s+href="/Services/)([^"]+)并替换为$1$3$2$3 -
您的输入文件是一个 XSL 文档。 either 重写它会更聪明,以便它接受参数,然后在调用它时使用参数(因为这似乎是您在这里尝试的 - 将可变参数值放入 XSL 文件) 或您可以使用 XSLT 对其进行转换。这两种方法都比使用正则表达式更好。要选择更好的解决方案,请详细说明上下文。