我试图设计一个正则表达式来测试一行是否是标准的Python导入语句,其中" import"术语是可选的。如,
[import] foo
[import] foo.bar
[import] foo.bar as baz
[import] foo, bar
但它不应该匹配:
[from] foo import bar
到目前为止,我有这些,但他们没有完成工作:
^(import\s+)?.+(?!\s+import\s+).+$
^(import\s+)?.+?(?!\s+import\s+).+$
他们不排除... import ...
样式语句。如,
>>> re.match(r'^(import\s+)?(.+)(?!\s+import\s+)(.+)$', 'foo import bar').groups()
(None, 'foo import ba', 'r')
>>> re.match(r'^(import\s+)?(.+?)(?!\s+import\s+)(.+)$', 'foo import bar').groups()
(None, 'f', 'oo import bar')
这可以用一个正则表达式来完成吗?
注意:我的目标不是解析import语句,而是仅仅检测它。我打算用 ast 模块解析它。
答案 0 :(得分:0)
在尝试使用negative lookahead assertion not working in python中的正则表达式后,我能够获得与var {
AppRegistry,
StyleSheet,
Text,
View,
} = React;
匹配的正则表达式并忽略var AppRegistry = React.AppRegistry;
var StyleSheet = React.StyleSheet;
var Text = React.Text;
var View = React.View;
:
[import] ...