繁体   English   中英

Python正则表达式代码块?

[英]Python regex for blocks of code?

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

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

我希望能够匹配从'^ keyword'到'and this line;'的内容

谢谢。

编辑。 我正在尝试删除不需要的节点的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)

您可以使用如下形式:

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

标志:

  • m代表mutiline,因此^起作用。
  • s如此. 与换行符不匹配。

说明:

  • ^keyword -开始与该行的keyword
  • .* -匹配到行尾
  • (?:\\n^\\t.*)* -每个都匹配以制表符开头的另一行。 请注意,我们希望匹配换行符,因此,如果您还有其他行分隔符,请多加注意。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM