如何创建一个可以匹配行开头以及以 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。
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.*)*
Flags:
-
m
对于多行,所以^
works.
- not
s
so .
不匹配换行符。
解释:
-
^keyword
- 该行的开头为keyword
-
.*
- 匹配直到行尾
-
(?:\n^\t.*)*
- 其中每一个都与另一条以制表符开头的行匹配。请注意,我们必须匹配换行符,因此如果您有其他行分隔符,请小心。
工作示例:http://www.regex101.com/r/jP8yH0 http://www.regex101.com/r/jP8yH0
当然,如果你想匹配real代码块,这可能很快就会失败 - 例如通过注释或字符串文字。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)