我有一个很长的文本,其中包含一些标记以突出显示之间的文本。我需要匹配这些标签之间的文本。 以下是标签列表: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/