如何替换Notepad ++

时间:2017-10-30 17:59:05

标签: xml notepad++

请帮助,我在xml文件中有很多代码我要替换最后一个单词

<Meaning>sự hạ thủy (tàu, thuyền); sự phóng (tên lửa)</para>

<Meaning>sự hạ thủy (tàu, thuyền); sự phóng (tên lửa)</Meaning>

我使用了以下替换代码: 找到:

^<Meaning>(.*)\<+.*$

替换为:

/<Meaning>$1.</Meaning>

但是当结果返回“find:invalid regular expression”

1 个答案:

答案 0 :(得分:0)

首先,您需要一个仅与您要替换的部分匹配的正则表达式。如果我理解正确,您希望在</ para>之前没有其他标记时替换<Meaning>。 这对于positiv lookbehinds来说是一个完美的例子,但由于它们仅限于固定数量的字符,我们需要使用\K

因此,搜索<Meaning>,搜索任何不是标记的内容,使用\K将其全部删除并获取<\ para>

<强>正则表达式

<Meaning>[^<]*[^>]*\K</ para>

也许你想确定,</ para>是该行中的最后一段文字。您可以搜索换行符\n\r(以及可选的空格\s),但您不希望将其替换为(?= )

<Meaning>[^<]*[^>]*\K</ para>(?=\s*[\n\r])

如果您想确定,<Meaning>是该行的第一部分,您必须检查文档的开头^或行制动[\r\n]

(?:^|[\r\n])<Meaning>[^<]*[^>]*\K</ para>(?=\s*[\n\r])

也许我说错了,<Meaning></ para>之间可以有任何内容,除非它在同一行。在这种情况下,您可以使用:

(?:^|[\r\n])<Meaning>[^\n\r]*\K</ para>(?=\s*[\n\r])