我正在练习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。 –