正则表达式匹配准导入语句

时间:2015-10-17 23:49:41

标签: python regex

我试图设计一个正则表达式来测试一行是否是标准的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 模块解析它。

1 个答案:

答案 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] ...