繁体   English   中英

如何使用正则表达式查找子字符串

[英]How to find a substring using regex

我在抓取 1000 篇路透社文章后得到的字符串如下所示:

<TEXT>&#2;
<TITLE>IF DOLLAR FOLLOWS WALL STREET JAPANESE WILL DIVEST</TITLE>
<AUTHOR>    By Yoshiko Mori</AUTHOR>
<DATELINE>    TOKYO, Oct 20 - </DATELINE><BODY>If the dollar goes the way of Wall Street,
Japanese will finally move out of dollar investments in a
serious way, Japan investment managers say.
 REUTER
&#3;</BODY></TEXT>

我想从这个字符串中提取标题、作者、日期和正文。 为此,我有以下正则表达式,但不幸的是,它不适用于正文部分。

try:
  body=re.search('<BODY>(.)</BODY>',example_txt).group(1)
except:
  body='NA'

这个 try-except 总是为 body 返回NA但适用于 title、author 和 dateline。 知道为什么吗?

谢谢!

使用re.DOTALL以便. 也匹配换行符。

关于。 淘宝

制作'.' 特殊字符完全匹配任何字符,包括换行符; 没有这个标志, '.' 将匹配除换行符以外的任何内容。

https://docs.python.org/3/library/re.html

您还需要*来匹配多个字符,而? 用于非贪婪匹配。

最后,我有一个预感,不太推荐try这里。 您可以改为检查来自re.search的匹配对象是否为None

import re

example_txt = '''<TEXT>&#2;
<TITLE>IF DOLLAR FOLLOWS WALL STREET JAPANESE WILL DIVEST</TITLE>
<AUTHOR>    By Yoshiko Mori</AUTHOR>
<DATELINE>    TOKYO, Oct 20 - </DATELINE><BODY>If the dollar goes the way of Wall Street,
Japanese will finally move out of dollar investments in a
serious way, Japan investment managers say.
 REUTER
&#3;</BODY></TEXT>'''

m = re.search(r'<BODY>(.*?)</BODY>', example_txt, flags=re.DOTALL)
body = m.group(1) if m else 'NA'

print(body)

输出:

Japanese will finally move out of dollar investments in a
serious way, Japan investment managers say.
 REUTER
&#3;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM