我正在努力进行正则表达式匹配。在我的情况下,我需要选择除特定标签之间的所有字符。我的文字看起来像是:
Lorem ipsum dolor sit amet [original]don't select this[/original], sit epicuri qualisque id.
'我想要Lorem ipsum dolor sit amet' +,'坐在epicuri qualisque id'被选中的文字。我已经尝试过选择所有字符而不是排除我的短语,但我没有得到它。 如果我把它们分组而不仅仅是第一次出现,但如果有更多这些标签,我就无法获得所需的结果。
关于如何实现这一目标的任何提示?
答案 0 :(得分:0)
您可以使用捕获组并抓取您想要的捕获组中的所有内容。
^((?:(?!\[original\]).)+)\[original\](?:(?!\[\/original\]).)+\[\/original\](.+)$
这会将所有内容放在捕获组1中的标记之前,以及捕获组2之后的所有内容。整个匹配与整行相匹配,但标记及其之间的所有内容都未在组中捕获。
注意:如果有多个标记,则无效。如果您需要,请编辑您的问题以反映这一点。
上测试答案 1 :(得分:0)
正如R Nar建议我使用另一种方法,正则表达式和分割/连接的组合来实现所需的结果。
首先我在javascript中使用split来创建一个单词数组
let words = input.split(/([original]|[/original])/);
分割后,我在所需的部分上应用了变换,一旦完成了变换,我就使用了连接方法将所有部分重新组合在一起。
input = words.join("");