使用正则表达式,有没有办法删除字符串中所有单词开头的#符号?它只需要从一开始就删除。
例如,This #is a #test string
应转换为This is a test string
我是regex的新手,所以还在学习。
编辑:
我尝试了以下但不起作用:
print re.sub(r'#\w+', r'\w+', "#hello")
...它将#hello
更改为w+
,而应将其更改为hello
答案 0 :(得分:1)
您可以使用字符串方法replace():
In [1]: s = 'This #is a #test string'
In [2]: s = s.replace('#', '')
In [3]: s
Out[3]: 'This is a test string'
http://pythoncentral.io/pythons-string-replace-method-replacing-python-strings/
这是一个正则表达式版本:
In [1]: import re
In [2]: s = 'This #is a #test # string#'
In [3]: pattern = re.compile('#(?=[a-zA-Z0-9])')
In [4]: re.sub(pattern,'', s)
Out[4]: 'This is a test # string#'
答案 1 :(得分:1)
您需要将空格和要保留的单词分组,并使用反向引用来保留它们;
'<div highlight underline>{{text}}</div>'
print re.sub(r'(^|\s+)#(\w+)', r'\1\2', '#This #is a #test stri#ng')
# This is a test stri#ng
匹配空格或行的开头
(^|\s+)
匹配您要删除的哈希值
#
匹配单词。
替换字符串使用两个后引用(\w+)
,一个用于空格,一个用于单词,但不包括哈希值。