我正在尝试在字符串中的最后两个括号之间获取所有大写字母。到目前为止,我已经尝试过这个:
/\(([A-Z])([^)]*)\)[^(]*$/g
例如:我不想(这些词),我想要(这两个)
但它给了我:
第1组T
第2组hese Two
有人可以帮助我吗?
提前致谢!
答案 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))
第一个正则表达式.*\(([^)]*)\).*
提取最后一个括号的内容。
.*
多次匹配任何字符\(
按字面意思匹配左括号([^)]*)
将除右括号以外的任何字符捕获到捕获组1 \)
字面上匹配右括号.*
多次匹配任何字符第二个正则表达式[A-Z]
匹配大写字母