2016-02-27 79 views
-1

使用正則表達式,有沒有辦法在字符串中的所有單詞的開頭刪除#號?它只需要從一開始就被刪除。使用正則表達式從字的開頭刪除#

例如This #is a #test string應轉變爲This is a test string

我是新來的正則表達式,所以仍然在學習。

編輯:

我嘗試以下,但它不工作:

print re.sub(r'#\w+', r'\w+', "#hello") ......它改變#hellow+,而應該將其更改爲hello

+0

那麼你有什麼嘗試,究竟是什麼問題呢? – jonrsharpe

+1

你的意思是刪除所有的哈希,或者只是哈希_在詞的開頭_? – khelwood

+0

是的,我自己嘗試過。我已經發布了上面的代碼片段。我可以確定需要替換的內容,但是替換字符串的正則表達式在某種程度上是錯誤的。 – Ahmad

回答

1

可以使用字符串方法替換():

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#' 
+0

我想你錯過了這個問題的一部分。 「它只需要從一開始就被刪除。」 –

+0

@ cricket_007:的確如此 – Benjamin

1

你需要做的空白,並要保持成組,並使用反向引用,使他們的言語。

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,一個用於空白,一個用於單詞,但省略散列。

+1

工作,謝謝!也感謝您的解釋! – Ahmad

+0

其實,你製作的是標籤組中的字符,而不是整個單詞 –

+0

@ cricket_007哎呦,修正了。 –

相關問題