[英]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.