我正在尝试使用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\]
答案 0 :(得分:1)
这里你去(其中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(...);
或x = x.replace(...)
之类的分配来存储修改后的字符串。
答案 1 :(得分:0)
使用此模式(\[quote=([^\]]+)\])[\s\S]+(?=\s\2)
并替换为$1
Demo