Javascript 获取括号之间的文本
在Javascript中,我希望得到一个字符串,表示两个括号之间的所有文本,即使该字符串包含更多的括号 其工作如下: (a)(b)(c)匹配(某物)强> [“a”、“b”、“c”] 或 “a” ((a)(b)(c))。匹配(某物)强> (a)(b)(c)Javascript 获取括号之间的文本,javascript,regex,string,Javascript,Regex,String,在Javascript中,我希望得到一个字符串,表示两个括号之间的所有文本,即使该字符串包含更多的括号 其工作如下: (a)(b)(c)匹配(某物) [“a”、“b”、“c”] 或 “a” ((a)(b)(c))。匹配(某物) (a)(b)(c) 这应该可以做到: (?:\()[^\(\)]*?(?:\)) 工作原理 \(匹配左括号 \)匹配右括号 [^\(\)]匹配除更多括号外的任何内容 *?向上述模式添加一个零次或多次量词(由?设置为惰性) JavaScript实现 尝试: 你在乎
这应该可以做到:
(?:\()[^\(\)]*?(?:\))
工作原理
匹配左括号\(
匹配右括号\)
匹配除更多括号外的任何内容[^\(\)]
向上述模式添加一个零次或多次量词(由*?
设置为惰性)?
JavaScript实现 尝试:
你在乎父母是否匹配吗? 如果是这样,您将不得不使用堆栈,而不能使用正则表达式 试着这样做:
var str=“aaa((0)12(2))bbb”;
var堆栈=[];
var结果=”;
var start=false;
对于(变量i=0;i console.log(result);
到目前为止您尝试了什么?/([^)]+)/-但是它返回[((a)”,“(a“]表示字符串”((a)(b)(c))“我很确定这样的语言是不规则的,因为识别引擎需要堆栈(或者使用非常量内存)。正则表达式不太可能是这项工作的正确工具。这也是我的想法。从我的CS类中,我认为它需要一个图灵机,但我不知道如何在JavaScript中实现这一点。“((A)(b)(c))”。match(/([^()]*?)/)-但它返回[“(A)”-不用解释,不起作用(尝试((A)b(c))
)不起作用,但谢谢你的正则表达式解释。@Carnic检查我的编辑!:D只需要一些非捕获组你是个天才!非常感谢你^ ^ ^在我的场景中,参数总是匹配的。谢谢,这个答案是可靠的。所以我的问题实际上是问括号内的文本。所以我稍微调整了一下你的代码。
your_string.match(/(?:\()[^\(\)]*?(?:\))/g)