2017-02-12 6 views
0

Pythonの正規表現でエスケープされ、私はこのようになりますのPython 3でいくつかのコードがあります。確保文字が

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

申し訳ありませんが、私は質問で明確ではありませんでした。私は、出現回数だけでなく、文字の出現ごとに**索引**を見つけようとしています。それを反映するように質問を更新しました。 –

関連する問題