我正在使用本教程來學習Python中的正則表達式 - 看起來像一個很好的教程!Python中的基本正則表達式問題,以幫助我學習
所以教程如下: http://regex101.com/r/vB7mV2
按照教程中,我應該使用的代碼是:
import re
p = re.compile(r'^(?P<Given>\w+) (?P<Middle>\w\.) (?P<Family>\w+)$', re.MULTILINE)
str = "Jack A. Smith\nMary B. Miller"
m = p.match(str)
print m.group(0)
Jack A. Smith
print m.group(1)
Jack
print m.group(2)
A.
print m.group(3)
Smith
print m.group(4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: no such group
令我驚訝的是,我失去了小瑪麗B.米勒 - 有沒有m.group(4)
所以我有一些跟進的問題:
(1)我正在使用多行,爲什麼它只匹配第一個,即例子中的Jack A. Smith?
(2)我現在用的是考慮到,中東和家庭爲每場比賽的標籤名,我該如何訪問使用這些標籤中的數據,而不僅僅是m.group(i)
(3)我們說我想做匹配和替換?即,我想匹配Mary B. Miller,並由Jane M. Goldstein取代,以便替換後的字符串現在爲:str = "Jack A. Smith\nJane M. Goldstein"
。我怎麼去做那個? (種無關,我們稱之爲獎金Q)
請勿使用'str'作爲變量名稱。你會掩飾內置的 – dawg