簡體   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