使用正則表達式,有沒有辦法在字符串中的所有單詞的開頭刪除#號?它只需要從一開始就被刪除。使用正則表達式從字的開頭刪除#
例如This #is a #test string
應轉變爲This is a test string
我是新來的正則表達式,所以仍然在學習。
編輯:
我嘗試以下,但它不工作:
print re.sub(r'#\w+', r'\w+', "#hello")
......它改變#hello
到w+
,而應該將其更改爲hello
使用正則表達式,有沒有辦法在字符串中的所有單詞的開頭刪除#號?它只需要從一開始就被刪除。使用正則表達式從字的開頭刪除#
例如This #is a #test string
應轉變爲This is a test string
我是新來的正則表達式,所以仍然在學習。
編輯:
我嘗試以下,但它不工作:
print re.sub(r'#\w+', r'\w+', "#hello")
......它改變#hello
到w+
,而應該將其更改爲hello
可以使用字符串方法替換():
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#'
我想你錯過了這個問題的一部分。 「它只需要從一開始就被刪除。」 –
@ cricket_007:的確如此 – Benjamin
你需要做的空白,並要保持成組,並使用反向引用,使他們的言語。
print re.sub(r'(^|\s+)#(\w+)', r'\1\2', '#This #is a #test stri#ng')
# This is a test stri#ng
(^|\s+)
匹配空格或行的開始。
#
與您想要移除的散列匹配。
(\w+)
符合這個詞。
替換字符串使用兩個反向引用\1\2
,一個用於空白,一個用於單詞,但省略散列。
那麼你有什麼嘗試,究竟是什麼問題呢? – jonrsharpe
你的意思是刪除所有的哈希,或者只是哈希_在詞的開頭_? – khelwood
是的,我自己嘗試過。我已經發布了上面的代碼片段。我可以確定需要替換的內容,但是替換字符串的正則表達式在某種程度上是錯誤的。 – Ahmad