新手请教正则提取

2016 年 8 月 1 日
 zhongshaohua
<img class="BDE_Image" src="http://imgsrc.baidu.com/forum/w%3D580/sign=2e8f3ca53af33a879e6d0012f65d1018/4ece3bc
79f3df8dc2ab63004cd11728b46102899.jpg" width="560" height="400" changedsize="true">
想提取 src 中的链接 reg = r'src="(.*?\.jpg)" width'
为什么 r'src="(.*?\.jpg)"' 和 r'src="(.*\.jpg)" width' 这样不行?
3876 次点击
所在节点    Python
14 条回复
zhongshaohua
2016 年 8 月 1 日
用的是 findall
laoyur
2016 年 8 月 1 日
源码中有换行,你得使用 single line 模式
lxy
2016 年 8 月 1 日
加 re.S
或者用这个: r'src="([^"]+)"'
zhongshaohua
2016 年 8 月 1 日
@lxy 谢谢 但是你这样为什么没有匹配引号呢? 因为你是^" 这样是匹配引号开头吧?
CosimoZi
2016 年 8 月 1 日
不要用正则匹配 html
linesh
2016 年 8 月 1 日
我在这里试了一下你的表达式,是可以的: http://regexr.com/

所以可能的原因有:
* 是否忘记了加 g 参数表示 global ,匹配多行?
* 是否可能是 Python 正则有其方言或者独特语法?
lllooo
2016 年 8 月 1 日
不要用正则匹配 html 。
https://pypi.python.org/pypi/beautifulsoup4
amustart
2016 年 8 月 1 日
不要用正则匹配 html +1 ,我记得 re 的作者?一直在吐槽这个,你要解析 html 就不能用 beautifulSoup 和其他 HTML 解析器么
PS : 练手和网页写的渣另算
lxy
2016 年 8 月 1 日
@zhongshaohua ^ 表示非,那句就表示匹配所有非双引号的字符。
imn1
2016 年 8 月 1 日
@amustart
PS : 练手和网页写的渣另算
=======================
不敢苟同

你知道加载 DOM 需要耗费多少时间和内存么?试试 parse 百万个 html 和只用 regex 比较一下?
CharlesL
2016 年 8 月 1 日
http://www.txt2re.com/index.php3
试试这个正则表达式生成器
z5864703
2016 年 8 月 1 日
@imn1 +10086
ImPerat0R
2016 年 8 月 1 日
slysly759
2016 年 8 月 5 日
# 我个人建议如下:
1. 不到万不得已不用正则表达式
2. 正则表达式对正文搜索支持和网页数据提取非常不友好
3. 网页建议使用 xpath ,美丽鸡汤我个人觉得不好用。
4. xpath 在 Google 有 xpath helper 非常好用,获取哪里点哪里,妈妈再也不用担心我的数据抓取了
5. 第四条的插件目前只能在 51.xGoogle chrome 以下使用。
6. 如果非要用正则表达式,那么有一个坑爸爸的正则表达式测试器供你使用。为什么坑爸爸,因为我经常自己写的在测试器可以,但是 python 私活不认,这不,刚买了新电脑。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/296246

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX