使用正则表达式从单词的开头删除#

时间:2016-02-27 22:44:29

标签: python regex

使用正则表达式,有没有办法删除字符串中所有单词开头的#符号?它只需要从一开始就删除。

例如,This #is a #test string应转换为This is a test string

我是regex的新手,所以还在学习。

编辑:

我尝试了以下但不起作用:

print re.sub(r'#\w+', r'\w+', "#hello") ...它将#hello更改为w+,而应将其更改为hello

2 个答案:

答案 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+),一个用于空格,一个用于单词,但不包括哈希值。