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