正则表达式:如何在特定部分获取HTML标签以外的所有文本?

时间:2014-02-06 15:26:53

标签: regex

我正在尝试使用正则表达式来获取此内容的文本:

 `content` = 'Уважаемый {first_name},<br><br>\r\n\r\n
    Hello, Tere, <b>this is some <span style="italic">lorem ipsum</span></b><br><br>
    \r\n\r\nÖöbik lõõritas äiksega Ülemistel.',`
 `something else` = 'Lorem {last_name},<br><br>\r\n\r\n
    Said Boo, <b>I'm a scary ghost</b><br><br>
    \r\n\r\nJäääär tööööl lõõritas üllalt.',`

因此,我正在尝试在'content' = '','之间获取所有非HTML标记文字。 我一直在四处寻找,但似乎我的正则表达式建设技能非常缺乏。 到目前为止我所拥有的是:

(?:`content` = ')(</?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)/?>)(?:',`)

但由于显而易见的原因,它无法正常工作。

所以,如果有人有一些想法,如何使这个正则表达式工作,你将成为我个人的英雄。

谢谢!

编辑:

该正则表达式的预期输出将是:

`content` = 'Уважаемый {first_name},
Hello, Tere, this is some lorem ipsum
Ööbik lõõritas äiksega Ülemistel.',`
`something else` = 'Lorem {last_name},<br><br>\r\n\r\n
Said Boo, <b>I'm a scary ghost</b><br><br>
\r\n\r\nJäääär tööööl lõõritas üllalt.',`

这不是语言特定的请求,只是纯粹的'正则表达式,只有一次通过..

1 个答案:

答案 0 :(得分:1)

很容易分两步完成。首先,删除标签:

# python
s = ''.join(re.findall(u"(?u)[^<>]+(?=(?:<|$))", data))

给出了

`content` = 'Уважаемый {first_name},


Hello, Tere, this is some lorem ipsum


Ööbik lõõritas äiksega Ülemistel.',`

然后删除引号:

s = re.sub("(^[^']+')|('.*$)", '', s)

根据您的编辑,这会提供所需的输出:

 re.sub(r'<.+?>(?=[^`]+`\s+`)','', data)