2015-10-05 80 views
1

我正在嘗試下一個代碼,但似乎我做錯了什麼。亂七八糟python

import re 

lista = ["\\hola\\01\\02Jan\\05\\03", 
"\\hola\\01\\02Dem\\12", 
"\\hola\\01\\02March\\12\\04"] 

for l in lista: 
    m= re.search("\\\\\d{2,2}\\\\\d{2,2}[a-zA-Z]+\\\\\d{2,2}\s",l) 
    if m: 
     print (m.group(0)) 

結果應該是第二個字符串。 我試過沒有\s,但結果與所有字符串匹配。

+0

你能包括預期中的問題的輸出? – garg10may

+0

是的。我編輯了代碼,因爲出現了勘誤表。 – kamboj

+0

如果你只需要得到四個序列,你可以這樣做:^(?:\\\\ [^ \\] +){4} $。但是如果你關心那些序列包含的文本,你需要詳細說明。 – lintmouse

回答

2

你可以試試這個正則表達式:

lista = [r"\hola\01\02Jan\05\03", r"\hola\01\02Dem\12", r"\hola\01\02March\12\04"] 

>>> for l in lista: 
...  m = re.search(r"\\\d{2,2}\\\d{2,2}[a-zA-Z]+\\\d{2}$", l) 
...  if m: 
...    print m.group() 
... 

輸出:

\01\02Dem\12 
  • 使用r"..."形式申報了正則表達式和輸入作爲原始字符串
  • 使用錨$避免匹配不需要的輸入
+1

謝謝。用'r'我只能在正則表達式中使用兩個反斜槓('\\')。如果可能,請更正代碼。再次感謝我學到了關於正則表達式的新東西。 – kamboj

0

您可以使用下面的代碼,而無需正則表達式:

>>> for l in lista: 
     totalNo = l.count('\\') 
     if totalNo == 4: 
      print l 
相關問題