我正在練習Magnus Lie Hetland的書「Beginning Python」第二版和第244頁上,他說我的代碼中列出的第一個模式應該產生在這段代碼的底部,但它沒有。所以我嘗試了一些其他模式,以嘗試獲得所需的輸出,但它們也不起作用。我檢查了本書的勘誤表,並且沒有更正此頁面。我使用Python 2.7.6。有什麼建議麼?findall和正則表達式,得到正確的模式
import re
s1 = 'http://www.python.org http://python.org www.python.org python.org .python.org ww.python.org w.python.org wwww.python.org'
# choose a pattern and comment out the other two
# output using Hetland's pattern
pat = r'(http://)?(www\.)?python\.org'
''' [('http://', 'www.'), ('http://', ''), ('', 'www.'), ('', ''), ('', ''), ('', ''), ('', ''), ('', 'www.')] '''
# output using this pattern
# pat = r'http://?www\.?python\.org'
''' ['http://www.python.org'] '''
# output using this pattern
# pat = r'http://?|www\.?|python\.org'
''' ['http://', 'www.', 'python.org', 'www.', 'http://', 'python.org', 'www.', 'python.org', 'python.org', 'python.org', 'python.org', 'python.org', 'www', 'python.org'] '''
print '\n', re.findall(pat, s1)
# desired output
''' ['http://www.python.org', 'http://python.org', 'www.python.org', 'python.org'] '''
如果它是一個正確編碼的URL,您可以對給定的示例進行拆分,但是我認爲這是針對字符串之類的URL可能出現在文本塊中的任何位置的情況? –
我試圖在所有三種模式上分割,並且它們都沒有工作,並且它將用於像文本塊中任何地方的字符串那樣的url。 –