Python和“re”模块
我在学习Python中的正则表达式(Regex)时,看到一个教程讲解了如何使用Python的re模块。我想从一个A标签中提取出URL,所以我写了正确的正则表达式,并在我喜欢的正则表达式测试工具中测试,确保它能正常工作。但是当我把它放到Python中时,却失败了。
result = re.match("a_regex_of_pure_awesomeness", "a string containing the awesomeness")
# result is None`
经过一番思考,我发现了问题所在:它自动期望你的模式从字符串的开头开始。我找到了解决办法,但我想知道如何把:
regex = ".*(a_regex_of_pure_awesomeness)"
改成
regex = "a_regex_of_pure_awesomeness"
好吧,这是一个标准的URL正则表达式,但我想避免任何可能的混淆,想要表达的意思是我想搞笑一下。
4 个回答
3
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,有人可能在使用一个叫做“库”的东西时,发现它的某些功能没有按照预期工作。这种情况下,通常需要检查一下代码,看看是不是哪里出了问题。
有时候,问题可能出在我们对这个库的使用方式上,或者是我们没有正确设置一些参数。为了找到问题的根源,我们可以尝试一些调试的方法,比如打印出一些信息,看看程序在运行时的状态。
总之,遇到问题时,不要着急,慢慢分析,找出问题所在,通常就能找到解决办法。
>>> import re
>>> pattern = re.compile("url")
>>> string = " url"
>>> pattern.match(string)
>>> pattern.search(string)
<_sre.SRE_Match object at 0xb7f7a6e8>
4
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(your_html)
for a in soup.findAll('a', href=True):
# do something with `a` w/ href attribute
print a['href']
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。
20
在Python中,“match”和“search”是有区别的;“match”只会在字符串的开头查找模式,而“search”则会在字符串的任何位置查找模式。