javascript - 正则表达式 JS : Searching between two same words

标签 javascript regex

我有一个很长的文本,其中包含一些标记以突出显示之间的文本。我需要匹配这些标签之间的文本。 以下是标签列表:CA |欧 | TC.

所以我这样做了:

\[[CA|OU|TC]+\][\s\S]*?\[-[CA|OU|TC]+\]

它正确匹配这些字符串

[CA] bla bla [-CA]
[OU] bla[-OU]
[TC] blabla [-TC]

问题是我只需要在标签相同时进行匹配。它不应与以下内容匹配。

[CA] bla bla [-OU]

有什么想法吗?谢谢。

最佳答案

你可以使用

\[(CA|OU|TC)][\s\S]*?\[-\1]

参见 regex demo .

(CA|OU|TC)组成一个捕获组,\1匹配相同的值。

var s = '[CA] bla bla [-CA] [OU] bla[-OU] [TC] blabla [-TC]] [CA] bla bla [-OU]';
var rx = /\[(CA|OU|TC)][\s\S]*?\[-\1]/g;
console.log( s.match(rx) );

关于javascript - 正则表达式 JS : Searching between two same words,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58449806/

相关文章:

regex - 使用 Regex 和 VB.NET 将字符串拆分为多个空格

javascript - VSCode 在保存时从我的正则表达式模式中删除 `\`

c++ - 向此正则表达式添加最少字符

javascript - 如何从该函数中删除第一个 if 语句?

javascript - phonegap 中不显示远程图像源

javascript - 尝试编写自定义复制/粘贴 Google 表格脚本

javascript - Angular 图表无法让标签按我需要的方式工作

javascript - 对于...在不产生方法中

python - 基本正则表达式模式会引发非预期结果

java - 正则表达式 - 获取两个注释之间的代码