在Ant构建文件中,有没有办法使用replaceregexp来查找和替换两个标记,并保留它们之间的内容?例如,要找到所有这些:
</a>1234abcdefg</P>
</a>123456789. </p>
</a> yop </p>
</a></p>
并替换
</a> and </p>
带
<@> and <@@>
所以我分别拥有:
<@>1234abcdefg@@
<@>123456789. <@@>
<@> yop <@@>
<@><@@>
我不能单独替换标签,因为它们出现在其他地方,我只想在</a>
后跟</p>
的实例,在同一行,没有任何内容或其他内容在他们之间,我想保留他们之间的内容。
答案 0 :(得分:0)
解决方案1:您可以试试这个
您将匹配项存储为括号,然后将其替换。
exp = new Regex(@“YourtagStartRegex(bodyRegex)YourtagClosingRegex”); str = exp.Replace(str,“$ 1”);
参考:Replace the start and end of a string ignoring the middle with regex, how?
或者
解决方案2:
答案 1 :(得分:0)
试试这个:
<replaceregexp file="notTested.xml" match="(<)\/a(>.*?<)\/p(>)" replace="\1@\2@@\3" byline="true" flags="g" />
至于but it replaces what's between the tags with .*
,我还没有在替换/替换表达式中看到.*
。可能它需要它作为文字.
和*
。
对于</a>.*</p>
,> .* <
在同一行中有</a>
和</p>
的多个后缀时不起作用...例如:
</a>1234abcdefg</P>abcde</a>123456789. </p>
将替换为
<@>1234abcdefg</P>abcde</a>123456789. <@@>
您需要使用非贪婪量词?
。有关.*?
vs .*
的使用情况,请参阅WiKi。