假设我有这样的字符串:
x = 'Wish she could have told me herself. @NicoleScherzy #nicolescherzinger #OneLove #myfav #MyQueen :heavy_black_heart::heavy_black_heart: some string too :smiling_face:'
所以,我想从中得到:
:heavy_black_heart:
:smiling_face:
为此,我做了以下工作:
import re
result = re.search(':(.*?):', x)
result.group()
它只给了我':heavy_black_heart:'
。我怎样才能让它工作?如果可能的话,我想在找到所有的单词后把它们储存在听写中。你知道吗
你似乎想匹配一些介于2
:
之间的符号,而.*?
可以匹配0个符号,你的正则表达式可以匹配::
,我认为这不是你想要的。值得注意的是,re.search
只返回第一个匹配,要获得多个匹配,通常使用re.findall
或re.finditer
。你知道吗我想你需要
或者如果只需要匹配
:...:
中的单词字符:或者-如果要匹配两个
:
之间的任何非空白字符:re.findall
将查找所有不重叠的事件,set
将删除重复。你知道吗模式将匹配
:
,然后匹配除:
([^:]+
)以外的1+个字符(或1个或多个字母、数字和_
),然后再匹配:
。你知道吗试试这个正则表达式:
print re.findall(':.*?:', x)
正在做这项工作。你知道吗输出:
[':沉重的黑心:',':沉重的黑心:',':微笑的脸:']
但如果要删除重复项:
用途:
输出:
[':沉重的\u黑心:',':笑脸:']
相关问题 更多 >
编程相关推荐