匹配两个不同标记之间的任何字符串

时间:2015-05-04 09:56:50

标签: javascript regex

我正在尝试匹配两个不同令牌之间的字符串的一部分。它们可能是字符串中多次出现的标记。

示例文本(标记为斜体,要匹配的文本为粗体):

  

这是 [开始匹配] 示例文本 [end-match]    [开始匹配] 令牌和普通 [end-match] 文字。

我有以下正则表达式,如果令牌是 {} ,这将有效:

/{([^}]+)}/g

我无法使用 [开始匹配] [结束匹配] 令牌。似乎Javascript中缺乏负面的背后隐藏是一个巨大的损失。

我无法弄清楚如何将 {} 替换为代币 [begin-match] [端匹配的。我怎么能匹配那些?

2 个答案:

答案 0 :(得分:4)

/x(.*?)y/g其中x是开头令牌,y是结尾令牌。

此RegEx表示:匹配任何内容(.),任意次(*),尽可能少(?)。

你问题的直接例子是:

/\[begin-match\](.*?)\[end-match\]/g

示例文本现在位于第一个捕获组中。

答案 1 :(得分:2)

\[begin-match\]((?:(?!\[end-match\]).)*)\[end-match\]

你可以尝试一下。参见演示。

https://regex101.com/r/uE3cC4/23