获取两个圆括号之间的文本

IT技术 javascript regex
2021-03-11 09:05:45

如何my使用 JavaScript 中的正则表达式从以下句子中的两个圆括号之间检索单词

“这是(我的)简单文本”

6个回答

console.log(
  "This is (my) simple text".match(/\(([^)]+)\)/)[1]
);

\(是开括号,(-启动子表达式,[^)]+-任何东西,但右括号一次或多次(你可能需要更换+*),)-子表达式的结束,\)-右大括号。match()返回的数组["(my)","my"]从中提取第二元件。

使用.match(/\{(.+?)\}/g)如果有多个结果
2021-04-24 09:05:45
您也可以使用.+?代替[^)]+
2021-04-30 09:05:45
+1 不错,工作起来很有魅力。我想添加您以将这个tinyurl.com/mog7lr3添加到您的可视化解释中。谢谢
2021-05-03 09:05:45
是的,有很多方法可以完成任务。
2021-05-07 09:05:45
var txt = "This is (my) simple text";
re = /\((.*)\)/;
console.log(txt.match(re)[1]);​

jsFiddle 示例

@smita 将 (.*) 更改为 (.*?) 以进行非贪婪匹配
2021-04-20 09:05:45
如果我们将 txt 更改为 txt = 'This is (my) (simple) text' 它给出了 'my) (simple' 作为输出。我们可以只获取我的。我们如何才能只获取匹配括号内的内容?
2021-04-22 09:05:45

你也可以尝试一个非正则表达式的方法(当然如果有多个这样的括号,它最终会需要循环,或者正则表达式)

init = txt.indexOf('(');
fin = txt.indexOf(')');
console.log(txt.substr(init+1,fin-init-1))
@Cupidvogel,在这种情况下,问题是 OP 在这种情况下到底想要什么。我不清楚我的正则表达式给出的结果是否不正确。您可能希望将其更改[^()]为当然,但这是否正确也不清楚。是的,不仅是性能,而且这只是关于使用正则表达式所有事情的流行趋势,如果你添加了一些检查,这会让我赞成你的答案;-)
2021-05-07 09:05:45
确切地。速度在这里可能不是问题,但通常正则表达式匹配很耗时。
2021-05-11 09:05:45
@MichaelKrelin-hacker:明白你的意思,但如果字符串有点像A ( 意味着开始然后结束它,比如 (my),即使你的正则表达式方法也不会给出正确的结果
2021-05-15 09:05:45
更易于使用substringtxt.substring(init + 1, fin)
2021-05-17 09:05:45
也就是说,是的,使用非正则表达式是一个不容低估的选择。
2021-05-20 09:05:45

对于希望在多个括号中返回多个文本的任何人

var testString = "(Charles) de (Gaulle), (Paris) [CDG]"
var reBrackets = /\((.*?)\)/g;
var listOfText = [];
var found;
while(found = reBrackets.exec(testString)) {
  listOfText.push(found[1]);
};

使用它来获取最近(之间的文本)

const string = "This is (my) (simple (text)"
console.log( string.match(/\(([^()]*)\)/)[1] )
console.log( string.match(/\(([^()]*)\)/g).map(function($0) { return $0.substring(1,$0.length-1) }) )

结果my["my","text"]

解释

--------------------------------------------------------------------------------
  \(                       '('
--------------------------------------------------------------------------------
  (                        group and capture to \1:
--------------------------------------------------------------------------------
    [^()]*                   any character except: '(', ')' (0 or
                             more times (matching the most amount
                             possible))
--------------------------------------------------------------------------------
  )                        end of \1
--------------------------------------------------------------------------------
  \)                       ')'