Python 如何获取以';开头的所有术语#';?

Python 如何获取以';开头的所有术语#';?,python,regex,hashtag,Python,Regex,Hashtag,我有这样一个字符串:“sometext#糖浆#nshit#thebluntislit” 我想得到一个以“#”开头的所有术语的列表 我使用了以下代码: import re line = "blahblahblah #Syrup #nshit #thebluntislit" ht = re.search(r'#\w*', line) ht = ht.group(0) print ht 我得到以下信息: #Syrup 我想知道是否有一种方法可以让我得到如下列表: [#Syrup,#nshit,#t

我有这样一个字符串:
“sometext#糖浆#nshit#thebluntislit”

我想得到一个以“#”开头的所有术语的列表

我使用了以下代码:

import re
line = "blahblahblah #Syrup #nshit #thebluntislit"
ht = re.search(r'#\w*', line)
ht = ht.group(0)
print ht
我得到以下信息:

#Syrup
我想知道是否有一种方法可以让我得到如下列表:

[#Syrup,#nshit,#thebluntislit]

对于所有以“#”开头的术语,而不仅仅是第一个术语。

对于Python这样的优秀编程语言,正则表达式是不需要的:

  hashed = [ word for word in line.split() if word.startswith("#") ]

看起来
re.findall()
将执行您想要的操作

matches = re.findall(r'#\w*', line)
你可以用

compiled = re.compile(r'#\w*')
compiled.findall(line)
输出:

['#Syrup', '#nshit', '#thebluntislit']
但有一个问题。如果搜索字符串,如
'blahblahblah#global#nshit#theblintislit beg#end'
,则输出将是
['#global'、'#nshit'、'#theblintislit'、'#end']

此问题可通过使用正向查找来解决:

compiled = re.compile(r'(?<=\s)#\w*')

compiled=re.compile(r'(?我称之为BS。是否需要正则表达式并不取决于语言,而是取决于用例。使用正则表达式有很好的理由,尽管这可能不是一个。总之,答案不错。Python很性感,不是吗?!:-)好的,这只有在所有的术语都是空格分隔的情况下才有效。而且,知道Mikko反对正则表达式,我想说的是,不是数学意义上的正则表达式,而是大脑受损的语法是不好的。