[英]How to find a substring using regex
我在抓取 1000 篇路透社文章后得到的字符串如下所示:
<TEXT>
<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
</BODY></TEXT>
我想从这个字符串中提取标题、作者、日期和正文。 为此,我有以下正则表达式,但不幸的是,它不适用于正文部分。
try:
body=re.search('<BODY>(.)</BODY>',example_txt).group(1)
except:
body='NA'
这个 try-except 总是为 body 返回NA
但适用于 title、author 和 dateline。 知道为什么吗?
谢谢!
使用re.DOTALL
以便.
也匹配换行符。
关于。 淘宝
制作
'.'
特殊字符完全匹配任何字符,包括换行符; 没有这个标志,'.'
将匹配除换行符以外的任何内容。
您还需要*
来匹配多个字符,而?
用于非贪婪匹配。
最后,我有一个预感,不太推荐try
这里。 您可以改为检查来自re.search
的匹配对象是否为None
。
import re
example_txt = '''<TEXT>
<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
</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

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