Python正则表达式的代码块?

时间:2013-10-10 06:08:41

标签: python regex python-2.7

如何创建一个可以匹配行开头的正则表达式以及以tab开头的所有以下行?例如

not keyword ;
    not this line ;
keyword and random text ;
    this line ;
    this line ;
    and this line ;
not keyword ;

我希望能够从'^ keyword'开始匹配'和此行;'

谢谢。

修改。我正在尝试删除Maya的MEL代码,用于我不需要的节点。实际的代码看起来像这样,有多行setAttr和tab缩进。

createNode mentalrayOptions ......... ;
    setAttr .............. ; 

我用

将整个文本加载到1个变量中
with open( 'path/to/file', 'r') as content_file:
    content = content_file.read()

我试过的正则表达式似乎正确地找到了起点但我无法正确得到终点。它匹配1行,根本不匹配任何内容或匹配到文件末尾。

match = re.search( r'(^createNode mentalrayOptions)(.*\n)(^\t)' ,content, flags=re.DOTALL)

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容:

^keyword.*(?:\n^\t.*)*

标志:

  • m表示多字符,因此^有效。
  • 不是s所以.与新行不匹配。

说明:

  • ^keyword - 使用keyword
  • 开头
  • .* - 匹配到行尾
  • (?:\n^\t.*)* - 每个匹配另一行以制表符开头。请注意,我们要匹配新行,因此如果您有其他行分隔符,请注意。

工作示例:http://www.regex101.com/r/jP8yH0

当然,如果您尝试匹配真正的代码块,则可能会很快失败 - 例如通过注释或字符串文字。