我正在尝试提取 Html 标签之间的字符串。我可以看到以前在堆栈溢出上也有人问过类似的问题,但我对 python 完全陌生,而且我很挣扎。
所以如果我有
<b>Bold Stuff</b>
我想要一个正则表达式让我
Bold Stuff
但到目前为止我所有的解决方案都给我留下了类似的东西
>Bold Stuff<
我真的很感激任何帮助。
I had
>.*?<
我看到了一个关于堆栈溢出的问题和建议的解决方案
>([^<>]*)<
但这些都不适合我。请有人解释一下如何编写一个正则表达式,表示“找到字符 x 和 y 之间的字符串,不包括 x 和 y”。
谢谢你的帮助
>>> a = '<b>Bold Stuff</b>'
>>>
>>> import re
>>> re.findall(r'>(.+?)<', a)
['Bold Stuff']
>>> re.findall(r'>(.*?)<', a)[0] # non-greedy mode
'Bold Stuff'
>>> re.findall(r'>(.+?)<', a)[0] # or this, also is non-greedy mode
'Bold Stuff'
>>> re.findall(r'>(.*)<', a)[0] # greedy mode
'Bold Stuff'
>>>
此时,贪婪模式和非贪婪模式都可以工作。
您正在使用第一种非贪婪模式。以下是关于非贪婪模式和贪婪模式的示例:
>>> a = '<b>Bold <br> Stuff</b>'
>>> re.findall(r'>(.*?)<', a)[0]
'Bold '
>>> re.findall(r'>(.*)<', a)[0]
'Bold <br> Stuff'
>>>
这是关于什么是(...) https://docs.python.org/2/library/re.html#regular-expression-syntax:
(...)
匹配括号内的任何正则表达式,并指示组的开始和结束;
执行匹配后可以检索组的内容,并且可以稍后在字符串中使用 \number 特殊序列进行匹配,如下所述。
匹配文字(
or )
, use \(
or \)
,或将它们包含在字符类中:[(] [)]
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)