正则表达式在方括号之后和之间选择,但将其从捕获的组中排除

时间:2019-03-13 13:07:34

标签: javascript regex

这是我的正则表达式:((.+?(?=[(]))([(].+?[)]))和字符串模板:"string(100)"。从中我捕获了3组。第一个是"string(100)",第二个是"string",第三个是"(100)"。但是我想从第三组中排除方括号,所以我只有"100"。我看过所有其他类似的帖子,但无法成功地使它们适应我的问题。

我为撰写几乎重复的帖子表示歉意,只是我自己没有太多时间来解决它。

谢谢。

3 个答案:

答案 0 :(得分:0)

只需在字面上匹配括号并创建一个仅包含括号内内容的组即可:

那是解决它的一种方法:

((.+?(?=[(]))\((.+?)\))

答案 1 :(得分:0)

您的表达可能比需要的表达更为复杂。这种简约的RegEx可能可以解决您的问题:

(.*)\((.*)\)

它匹配带有一对方括号的任何内容。整个比赛通常可以用作所有语言/框架中的捕获组。这两个显式捕获组围绕方括号之前的所有内容以及内部的所有内容。 (“一切”是指除换行符以外的所有字符。)

这是一个交互式的深入解释和一些示例:https://regex101.com/r/OgshEn/1

答案 2 :(得分:0)

此正则表达式'/(\ w +)((\ d +))/'获得所需的结果。请参考以下javascript结果。

let matches = "string(100)".match(/(\w+)\((\d+)\)/);
console.log(matches[0]);
console.log(matches[1]);
console.log(matches[2]);