【发布时间】:2018-06-10 14:50:19
【问题描述】:
我使用标签的形式是
[[MyTag]]Some Text[[/MyTag]]
为了在整个文本中找到这些标签,我使用以下表达式(这与这里的问题无关,但仅供参考):
\[\[(?<key>.*\w)]\](?<keyvalue>.*?)\[\[/\1\]\]
现在我喜欢只匹配和替换不在这些自定义标签内的文本 (MYSEARCHTEXT)。
例子:
[[Tag1]]Here I don't want to replace MYSEARCHTEXT[[/Tag1]]
But here MYSEARCHTEXT (1) should be replaced. And here MYSEARCHTEXT (2) needs to be replaced too.
[[AnotherTag]]Here I don't want to replace MYSEARCHTEXT[[/AnotherTag]]
And here I need to replace MYSEARCHTEXT (3) also.
MYSEARCHTEXT 是一个单词或短语,在这个例子中需要被找到 3 次。
【问题讨论】:
-
和 究竟是什么? -
这些只是正则表达式组名。在示例中,“key”是第 1 组,包含“Tag1”,“keyvalue”是第 2 组,包含“这里我不想替换 MYSEARCHTEXT”。但是我需要所有不在这些标签内的 MYSEARCHTEXT 匹配项(在文本中可以有许多这样的标签,具有不同的键名)。
-
看看this answer。您可以使用正则表达式类循环遍历每个匹配项,然后对前一组中的剩余文本(以及另一个匹配
MYSEARCHTEXT的正则表达式)执行您需要的操作。