我有这样一个字符串s = "Hello this is Helloworld #helloworld #hiworld #nihaoworld "
这个想法是捕获所有的hashtag,但是hashtag需要有一个边界。e、 如果像"Hello this is helloworld#helloworld"
这样的东西不能被捕获
我想生成以下结果["#helloworld","#hiworld","nihaoworld"]
我有以下python代码
import re
print re.findall('(?:^|\s+)(#[a-z]{1,})(?:\s+|$)', s)
我得到的结果是["#helloworld","#nihaoworld"]
,中间的单词丢失了
我不认为你真的需要一个正则表达式,你可以使用:
s.strip().split()
但是,如果您确实想使用正则表达式,可以只使用^{} :
解释
(?:^|\s)
^
^
断言字符串开头的位置\s
\s
匹配任何空格字符(等于[\r\n\t\f\v ]
)(#\w+)
#
按字面意思匹配字符#
(区分大小写)\w+
匹配任何单词字符(等于[a-zA-Z0-9_]
)+
量词-在一次和无限次之间匹配,尽可能多地匹配,根据需要回馈(贪心)相关问题 更多 >
编程相关推荐