2015-01-09 37 views
3

我正在寫一個python腳本來編輯我的文件中只有第一個註釋塊。 我有一個註釋塊,看起來像這樣:Python正則表達式編輯第一條評論

############################ 
## 
## Comment to 
## be changed 
## 
############################ 

############################ 
## Don't want to change 
############################ 

我想寫一個正則表達式來只找到第一個註釋塊和替換它,所以它看起來是這樣的:

############################ 
## 
## Comment has 
## been changed 
## 
############################ 

############################ 
## Don't want to change 
############################ 

由於現在我有:

editedCommentFile = re.sub(r'\#{2,150}.*?\#{2,150}.*?\s*', replString, searchedString, 1, re.DOTALL) 

不幸的是,這隻匹配'#'的第一行和下一行'##'的3個字符。它看起來像這樣:

############################ 
## 
## Comment has 
## been changed 
## 
############################ Comment to 
## be changed 
## 
############################ 

############################ 
## Don't want to change 
############################ 

我在想,不知怎的,我需要的正則表達式來停止模式匹配,一旦達到第一的註釋塊,下一之間的空白換行符。 任何幫助,將不勝感激。

+0

如果您的問題被正確解答或解決,請接受答案,讓其他具有相同/類似問題的SO用戶(如我)知道所提供的答案/解決方案適合您。謝謝! – 2015-01-09 22:11:59

回答

3

使用\#{3,150}需要3或更多的#字符:

import re 

searchedString = '''\ 
############################ 
## 
## Comment to 
## be changed 
## 
############################ 

############################ 
## Don't want to change 
############################''' 


replString = '''\ 
############################ 
## 
## Comment has 
## been changed 
## 
############################''' 

editedCommentFile = re.sub(r'\#{2,150}.*?\#{3,150}', replString, 
          searchedString, 1, re.DOTALL) 

print(editedCommentFile) 

產生

############################ 
## 
## Comment has 
## been changed 
## 
############################ 

############################ 
## Don't want to change 
############################ 

當您使用\#{2,150}然後r'\#{2,150}.*?\#{2,150}'過早匹配

############################ 
## 

這就是爲什麼你會得到

############################ 
## 
## Comment has 
## been changed 
## 
############################ 
## Comment to 
## be changed 
## 
############################ 

代替。

+0

這很棒!謝謝你的協助。 – yoloswaggins 2015-01-12 16:39:53