[英]How to use regular expression to retrieve data in python?
我有一个字符串定义为,
content = "f(1, 4, 'red', '/color/down1.html');
f(2, 5, 'green', '/color/colorpanel/down2.html');
f(3, 6, 'blue', '/color/colorpanel/colorlibrary/down3.html');"
这是我尝试过但不起作用的代码:
results = re.findall(r"f(.*?)", content)
for each in results:
print each
如何使用正则表达式来检索内容中的链接? 谢谢。
您可以在https://regex101.com/和http://regexr.com/上学习基本的正则表达式
In [4]: import re
In [5]: content = "f(1, 4, 'red', '/color/down1.html'); \
...: f(2, 5, 'green', '/color/colorpanel/down2.html'); \
...: f(3, 6, 'blue', '/color/colorpanel/colorlibrary/down3.html');"
In [6]: p = re.compile(r'(?=/).*?(?<=.html)')
In [7]: p.findall(content)
Out[7]:
['/color/down1.html',
'/color/colorpanel/down2.html',
'/color/colorpanel/colorlibrary/down3.html']
.*? 匹配任何字符(除了行
*? 量词——匹配零次和无限次,尽可能少,按需扩展(懒惰)
你也可以只得到最后一个/
In [8]: p2 = re.compile(r'[^/]*.html')
In [9]: p2.findall(content)
Out[9]: ['down1.html', 'down2.html', 'down3.html']
[^/]*匹配下面列表中不存在的单个字符
* 量词——在零次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪)
/匹配字符 / 字面意思(区分大小写)
. 匹配任何字符(行终止符除外) html 按字面意思匹配字符 html(区分大小写)。
或者,您可以提取f()
所有数据
In [15]: p3 = re.compile(r"(?=f\().*?(?<=\);)")
In [16]: p3.findall(content)
Out[16]:
["f(1, 4, 'red', '/color/down1.html');",
"f(2, 5, 'green', '/color/colorpanel/down2.html');",
"f(3, 6, 'blue', '/color/colorpanel/colorlibrary/down3.html');"]
你可以这样做:
re.findall(r"f\(.*,.*,.*, '(.*)'", content)
你可以这样尝试:
import re
content = """f(1, 4, 'red', '/color/down1.html');
f(2, 5, 'green', '/color/colorpanel/down2.html');
f(3, 6, 'blue', '/color/colorpanel/colorlibrary/down3.html');"""
print re.findall(r"(\/[^']+?)'", content)
输出:
['/color/down1.html', '/color/colorpanel/down2.html', '/color/colorpanel/colorlibrary/down3.html']
正则表达式:
(\\/[^']+?)'
- 匹配/
后跟 1 个或多个非'
字符,直到第一次出现'
并在 group1 中捕获。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.