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

Vik*_*kas 38 javascript regex

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

"这是(我的)简单文字"

Mic*_*ker 77

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

\(是左括号,(-子表达式的开始,[^)]+-什么,但右括号一次或多次(你可能需要更换+*),)-子表达式的结束,\)-右大括号.该match()返回的数组["(my)","my"]从中提取第二元件.

  • 您也可以使用`.+?`而不是`[^]] +`. (2认同)

j08*_*691 14

var txt = "This is (my) simple text";
re = /\((.*)\)/;
console.log(txt.match(re)[1]);?
Run Code Online (Sandbox Code Playgroud)

jsFiddle例子

  • 如果我们将 txt 更改为 txt = 'This is (my) (simple) text' 它给出了 'my) (simple' 作为输出。我们能否只得到我的。我们怎样才能只得到匹配括号内的内容? (2认同)

Sex*_*ast 9

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

init = txt.indexOf('(');
fin = txt.indexOf(')');
console.log(txt.substr(init+1,fin-init-1))
Run Code Online (Sandbox Code Playgroud)

  • 更容易使用`substring`:`txt.substring(init + 1,fin)` (3认同)

Rys*_*ech 8

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

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) }) )
Run Code Online (Sandbox Code Playgroud)

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

解释

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


小智 5

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

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