2012-11-11 22 views
2

給下面的字符串:正則表達式表達額外一個領域

';\n;20121110_160816\n;www.google.com\n\n; Test\na=5\n\nend\n' 

什麼是解析字符串作爲以下字段的正則表達式? :

;\n 
;20121110_160816\n 
;www.google.com\n 
; Test\n 

我最初的嘗試失敗低於:

import re 
m = re.search(';.+?\\n', mystr) 

輸出:

m.group() 
';20121110_160816\n' 

感謝。

+1

我沒有使用Python中的正則表達式的經驗,但我知道一般的正則表達式,我可以告訴你,你可能想要。*?而不是。+? ...也就是說,如果你還想匹配「空」'; \ n'。 +需要一個或多個字符; *爲零或更多。 – jrajav

+0

你試過s.split(';')'嗎? –

+1

'm = re.findall(r';。*?\ n',mystr)' –

回答

1
import re 
re.findall('(;.*)\n', s) 

表達步行通過:

  1. 您的項目開始於一個 「;」 - >';
  2. 後跟實際任何符號在任何數量的 - 「*」, 「」>所述=任何符號 「*」= 0無限次
  3. 它以新行完 - > 「\ n」 個
  4. 可讀性我把重複-GRP到括號

但在這種情況下,你還應該考慮:

s.split(),如果不帶參數suplemented其於換行自動拆分。

更新 - 評論您的評論;-)

我不知道如果我真的瞭解你的yobout的問號。但總的來說,星號,問號和加號是量詞。類似於和 - 鍵,它們本身沒有意義,並且單獨一半是毫無價值的。但是與其他鍵/字符結合使用時,它們會修改它們的行爲,或者在量化器的情況下指定是否應該重複前一個字符/組的次數和/或次數。

+0

r';。*?\ n'產生確切的輸出,或r';。* \ n' 沒有問號;雖然不確定角色「?」這裏。 –

+0

隨時添加此評論作爲跟進您的問題。 –

相關問題