【发布时间】:2015-10-28 16:02:02
【问题描述】:
我正在尝试解析一个 javascript 文件以获取 require 函数所需的所有文件,但我想确保这些要求不在封闭块内
为了简单地解析 require 调用,这就是我所做的
regex = re.compile(
r"require\([\'\"](?P<filename>\.{1,2}.*?)(?:\.jsx?)?[\'\"]\)",
re.M | re.I)
那么如何分块丢弃require?例如,如果我有:
var test = require("./test");
{
var test2 = require("./test2");
}
我会得到./test,但不会得到./test2
我之前可以天真地尝试用左大括号取消匹配require,但我的正则表达式似乎不起作用,它仍然匹配我不想要的那些
(?<!{)[^{]*?require\([\'\"](?P<filename>\.{1,2}.*?)(?:\.jsx?)?[\'\"]\)
谢谢!
【问题讨论】:
-
您是否坚持仅使用正则表达式来完成此操作。不是不可能,只是保证不可读。
-
是的 -.- 如果可能的话。这是我唯一需要做的解析,我认为使用解析库不值得哈哈
-
我不是说解析库,只是循环计算
{和}的个数。 -
您能详细说明一下吗?
标签: javascript python regex