正则表达式为字符串中最后2个括号之间的所有大写字母

时间:2017-12-27 19:35:49

标签: javascript regex expression

我正在尝试在字符串中的最后两个括号之间获取所有大写字母。到目前为止,我已经尝试过这个:

/\(([A-Z])([^)]*)\)[^(]*$/g

例如:我不想(这些词),我想要(这两个)

但它给了我:

第1组T

第2组hese Two

有人可以帮助我吗?

提前致谢!

3 个答案:

答案 0 :(得分:2)

我认为,最短最简单的解决方案是:

  • (?!.*\() - 否定前瞻 - 以后任何地方都无法发生 开括号(在任意数量的其他字符之后),
  • (?=.*\)) - 积极的向前看 - 某个地方以后必须有 发生右括号(在任意数量的其他字符之后),
  • [A-Z] - 抓住大写字母,而不是捕获组, 但作为“正常”比赛,
  • g - 使用全球选项。

总结一下:

/(?!.*\()(?=.*\))[A-Z]/g

答案 1 :(得分:0)

您可以获取JavaScript中括号中包含的最后一个字符串之间的所有大写字母,如下所示:

/(?!.*\()(?=.*\))([A-Z])/g

第一部分(?!.*\(.*\))是负向前瞻,忽略所有左括号并在最后一个后立即停止。然后我们执行一个积极的前瞻,它匹配所有内容,直到它遇到右括号。然后我们匹配大写字母。

答案 2 :(得分:0)

代码

var s = "I don't want (These Words), I want (These Two)"
var r = /.*\(([^)]*)\)/
var m = r.exec(s)

console.log(m[1].match(/[A-Z]/g))

说明

First Regex

第一个正则表达式.*\(([^)]*)\).*提取最后一个括号的内容。

  • .*多次匹配任何字符
  • \(按字面意思匹配左括号
  • ([^)]*)将除右括号以外的任何字符捕获到捕获组1
  • \)字面上匹配右括号
  • .*多次匹配任何字符

第二个正则表达式

第二个正则表达式[A-Z]匹配大写字母