繁体   English   中英

正则表达式 - 从第二次出现到最后一次出现

[英]Regex - Find from second occurrence till second last occurrence

我正在尝试使用Javascript的.match()或.replace()函数匹配第一次和最后一次出现之间的所有内容。 因此,我将使用正则表达式找到我需要删除的内容。 内容将与许多行和其他字符不同,但这只是一个示例。

[quote=Person 1]
[quote=Person 2]
[quote=Person 3]
Person 3
[/quote]
Person 2
[/quote]
Person 1
[/quote]

我需要匹配并删除从第二次出现[quote = Person 2]到第二次出现的所有内容[/ quote]

话虽如此,它应该最终输出:

[quote=Person 1]
Person 1
[/quote]

您可以像这样匹配引号标签

\[quote(.*?)\] 

和这样的结束引用标签

\[\/quote\]

在这里你去(其中x是上面的示例文本):

var newx = x.replace(/^(\[quote=(?:(?!\[quote=)[\s\S]*?))\[quote=[\s\S]+\[\/quote\]\s*([\s\S]+?\[\/quote\]\s*)$/g, "$1$2")

这会产生:

[quote=Person 1]
Person 1
[/quote]

请注意, x.replace()不会更改x的内容 - 您必须执行var newx = x.replace(...);类的赋值var newx = x.replace(...); 或者x = x.replace(...)来存储修改后的字符串。

使用此模式(\\[quote=([^\\]]+)\\])[\\s\\S]+(?=\\s\\2)并替换为$1 演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM