匹配除特定标签之间的内容之外的enything

时间:2016-08-08 15:23:27

标签: regex

我正在努力进行正则表达式匹配。在我的情况下,我需要选择除特定标签之间的所有字符。我的文字看起来像是:

Lorem ipsum dolor sit amet [original]don't select this[/original], sit epicuri qualisque id.

'我想要Lorem ipsum dolor sit amet' +,'坐在epicuri qualisque id'被选中的文字。我已经尝试过选择所有字符而不是排除我的短语,但我没有得到它。 如果我把它们分组而不仅仅是第一次出现,但如果有更多这些标签,我就无法获得所需的结果。

关于如何实现这一目标的任何提示?

2 个答案:

答案 0 :(得分:0)

您可以使用捕获组并抓取您想要的捕获组中的所有内容。

^((?:(?!\[original\]).)+)\[original\](?:(?!\[\/original\]).)+\[\/original\](.+)$

这会将所有内容放在捕获组1中的标记之前,以及捕获组2之后的所有内容。整个匹配与整行相匹配,但标记及其之间的所有内容都未在组中捕获。

注意:如果有多个标记,则无效。如果您需要,请编辑您的问题以反映这一点。

regex101

上测试

答案 1 :(得分:0)

正如R Nar建议我使用另一种方法,正则表达式和分割/连接的组合来实现所需的结果。

首先我在javascript中使用split来创建一个单词数组

let words = input.split(/([original]|[/original])/);

分割后,我在所需的部分上应用了变换,一旦完成了变换,我就使用了连接方法将所有部分重新组合在一起。

input = words.join("");