1
我正在嘗試做一個4行多行匹配。我的代碼找到第一個。但不是其他人。python正則表達式匹配全部
這裏是圖案:
pattern = re.compile("([a-z]+\.com\.|net\.)[.\s\S]+(Z[A-Z0-9]+)")
這裏是受試者:
sub = """yahoo.com.
Public
8
Z2RVE9XGX4PFJN
google.com.
Public
7
Z2VATLWTLBDR5D
"""
下面是完整的代碼:
import re
pattern = re.compile("([a-z]+\.com\.|net\.)[.\s\S]+(Z[A-Z0-9]+)")
sub = """yahoo.com.
Public
8
Z2RVE9JJGX4PFJN
google.com.
Public
7
Z2VATZOPLBDR5D
"""
m = pattern.findall(sub)
print(m)
下面是結果:
[('yahoo.com.', 'Z2RVE9JJGX4PFJN')]
最後,這裏是理想的結果:
[('yahoo.com.', 'Z2RVE9JJGX4PFJN'), ('google.com', Z2VATZOPLBDR5D')]
謝謝。
謝謝!完美的作品。如果我知道如何,我會將其標記爲正確。 –
我回去學習了一下。作爲一個便箋,我想指出我認爲我爲其他具有普通正則表達式技能的人出錯的地方。這裏是「[。\ s \ S]」。我相信 」。」是問題的重要組成部分,因爲它以貪婪的方式將所有內容匹配到最後(Z [A-Z0-9] +)。再次感謝Dawg。 –
部分'[\ s \ S]'匹配任何字符,包括'\ n'。它將在下一場比賽中正確運行。除非你想一直運行到最後,否則很少使用「?」。 – dawg