【发布时间】:2018-08-20 17:23:37
【问题描述】:
我找到了很多匹配嵌套括号内内容的正则表达式示例,但我想做的是匹配:
- 具有特定名称的函数
- 匹配大括号内的所有内容(包括任何嵌套的大括号)
例如:
function someFunc() {
const a = 6;
if (a === 7) {
while (true) {
break;
}
}
}
这应该会找到function someFunc+ignore 任何内容,直到第一个花括号+然后匹配花括号内的所有内容,包括任何嵌套的花括号。
我是 regex 的菜鸟,所以我不能告诉你我做了什么,我一直在看 Regex to get string between curly braces "{I want what's between the curly braces}" 但它们都不合适。谢谢!
PS 预期输出是一个函数中所有内容的捕获组(然后我可以替换它)。
【问题讨论】:
-
计算括号对于正则表达式的要求太高了,除非您使用将它们扩展到常规语法可能性之外的奇异特性(这在 javascript 中可能不存在)
-
我不太清楚这个输入的预期结果是什么 - 你能澄清一下吗?
-
这样的东西更适合使用解析器。有很多好的解析器引擎,例如。
https://pegjs.org/实际上你的解析是 Javascript,你甚至可以使用 Babel,它已经为你解决了所有的 AST。 -
JS 引擎不支持递归。所以你不能在JS中做到这一点。
-
正则表达式只对regular languages有用。 JavaScript 是 not a regular language
标签: javascript regex