Regex for Two Tag Find&取代

时间:2015-09-05 13:49:47

标签: regex xml notepad++

论坛成员, 我使用的是最新版本的NotePad ++。如果有人可以帮助我开发一个执行开放性的正则表达式,我将非常感激。关闭标签查找&amp;替换操作取决于被替换的开口标签是否在开头<levelledPara>标签之前。下面是示例代码,以阐明我需要正则表达式做什么:

找到这个文字字符串: <levelledPara><title>THIS IS TEXT FOR A TITLE</title>

替换此文字字符串: <levelledPara><para>THIS IS TEXT FOR A TITLE</para>

总结一下,只有当开头<title>标记前面有一个开头时,我才需要将</title><para>标记替换为</para><title> {1}}标记。另外,我需要<levelledPara><para>标记内的文字保持不变。正则表达式是否可以执行此类操作?

3 个答案:

答案 0 :(得分:0)

您可以根据捕获的群组

将此正则表达式用于搜索
(<levelledPara>\s*)<([^>]+)>(.*?)<\/\2>

并使用此替代品:

$1<para>$3</para>

RegEx Demo

正则表达式分手:

(<levelledPara>\s*) # Match <levelledPara> followed by 0 or more spaces and group it ($1)
<([^>]+)>           # Match a XML tag and group it ($2)
(.*?)               # Match 0 or more characters (non-greedy) and group it ($3)
<\/\2>              # Match closing tag using back-reference to captured group #2

替换它:

$1       # Back-reference of captured group #1
<para>   # Literal text <para>
$3       # Back-reference of captured group #1
</para>  # Literal text </para>

答案 1 :(得分:0)

我发现下面的一个也在工作。在查找框中保留:

                <levelledPara><title>(.*)</title>

并在替换框中保留

                <levelledPara><para>\1</para>

希望这也适合你的情况。

答案 2 :(得分:0)

您不需要使用正则表达式,您可以通过找到“ title&gt; ”来解决此问题,并将其替换为“ para&gt;