2017-02-12 27 views
0

我在Python 3的一些代碼,看起來像這樣:確保字符轉義使用Python正則表達式

import re 

searchChar = string1[0] 
re.finditer(searchChar, a_string) 

這樣的想法是找到一個字符串的字符出現的所有的索引。

問題是,string1可能是任何東西,所以如果它是像string1 = 'cat'string1 = 'dog'正常的東西,那麼一切都很好。

但是,如果它以一個正則表達式控制字符開頭,那麼你有一個問題。例如,如果您有string1 = *hello,那麼searchChar'*',並且findIter將返回錯誤,因爲'*'是無效的正則表達式。

在我的情況下,我一直在尋找一個字符文字。那麼是否有辦法確保searchChar被轉義(即'\*')當且僅當它需要?

+0

看起來像正則表達式得到更多的方式,它的幫助。那麼簡單的字符串搜索呢? –

+3

使用['re.escape'](https://docs.python.org/3/library/re.html#re.escape) – niemmi

+0

您不需要're'來查找字符串中字符的出現,像'string.find'應該就足夠了。見https://docs.python.org/2/library/string.html#string.find –

回答

0

Niemmi的評論是我需要的答案。看起來像re.escape就是答案。

2

做一個純粹的字符串搜索。如果要計算子字符串的出現次數,str實例爲此提供了count方法。

>>> '*|*|'.count('*') 
2 
+0

對不起,我不清楚這個問題。我試圖找出每個字符出現的**索引**,而不僅僅是出現次數。我更新了這個問題以反映這一點。 –

相關問題