如何创建一个可以匹配行开头的正则表达式以及以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)
答案 0 :(得分:3)
您可以使用以下内容:
^keyword.*(?:\n^\t.*)*
标志:
m
表示多字符,因此^
有效。s
所以.
与新行不匹配。说明:
^keyword
- 使用keyword
.*
- 匹配到行尾(?:\n^\t.*)*
- 每个匹配另一行以制表符开头。请注意,我们要匹配新行,因此如果您有其他行分隔符,请注意。工作示例:http://www.regex101.com/r/jP8yH0
当然,如果您尝试匹配真正的代码块,则可能会很快失败 - 例如通过注释或字符串文字。