Python regex提取字符串

2024-09-27 04:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我有一根这样的线

<TEST>foo bar</TEST>

我想用正则表达式来提取foo-bar。你知道吗

我现在正在用这个,但不起作用

typesRegex = re.compile('<\w+>(\w+)<\w+>')
typesRegex.match(testStr)

为什么?你知道吗


Tags: testrefoomatchbarcompileteststrtypesregex
2条回答

这个正则表达式更灵活,概念也更简单:“直到下一个开始的尖括号”

>>> import re                     
>>> r = re.compile(r'<test>([^<]*)</test>', re.I)
>>> r.search("<TEST>foo bar </test>").group(1)
'foo bar '
>>> r.search("<TEST>Charles Camille Saint-Saens</test>").group(1)
'Charles Camille Saint-Saens'

您应该注意到\w将不匹配-%@等。。。你知道吗

您已经收到许多意见,阻止您自己解析HTML。但是我把我的答案贴出来是希望你能理解有限状态机在文本分析中的应用。HTH公司

因为\w与空格不匹配。你知道吗

foo bar包含空格。你知道吗

同时</TEST>包含/,两者都不匹配\w。你知道吗

>>> re.match(r'<\w+>([\w\s]+)</\w+>', '<TEST>foo bar</TEST>')
<_sre.SRE_Match object at 0x0000000002AFDBE8>
>>> _.groups()
('foo bar',)

相关问题 更多 >

    热门问题