使用python在2个字符之间提取字符串

时间:2016-08-03 21:25:18

标签: python regex beautifulsoup

我需要一个Python正则表达式,从这样的字符串中为~^之间的所有字符串提供:

~~~~ AAA ^ BBB ^ CCC > DDD ^ 

我试过这个:

import re
target = ' ~~~~ AAA > ^ BBB ^ CCC > DDD ^  '
matchObj = re.findall(r'~(.*?)\^', target)
print matchObj 

但结果是:

['~~~ ABC ']

我的期望是:

['AAA', 'BBB', 'CCC', 'DDD']

['^AAA', '^BBB', '^CCC', 'DDD']

我想这样做,因为我试图从HTML页面中提取文本,如下所示:

 <td class="cell-1">
    <div><span class="value-frame">&nbsp;~~~~ ABC ^ DEF ^ HGK > LMN ^</span></div>
</td>

2 个答案:

答案 0 :(得分:0)

只要您使用BeautifulSoup正确解析HTML并且只留下了span的内容,那么您应该只能将其用作RegEx:

import re

target = ' ~~~~ AAA ^ BBB ^ CCC > DDD ^  '

matchObj = re.findall('(\w{3})', target)

print(matchObj)

<强>输出:

['AAA', 'BBB', 'CCC', 'DDD']

答案 1 :(得分:0)

你可以这样做:

[x.strip('~ ') for x in re.split(' *[\^\>] *', s) if x]
# ['AAA', 'BBB', 'CCC', 'DDD']