Python和“re”模块

7 投票
4 回答
1064 浏览
提问于 2025-04-11 09:15

我在学习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”则会在字符串的任何位置查找模式。

Python正则表达式文档
匹配与搜索

撰写回答