2

私は次のいずれかがPythonに存在するかどうか疑問に思っていました:

  • A:「re.findall()」と同等の非正規表現。
  • B:findall()に渡す前に、変数内の正規表現の特殊文字を無効にする方法。

変数をre.findallに渡していますが、これらの文字を文字どおりに解釈したいので、変数にピリオド、スラッシュ、カラットなどがあると問題が発生します。この作業を行うために正規表現を使用する必要はないことはわかっていますが、re.findall()の動作は、見つかったすべての一致のリストを返すため、気に入っています。これにより、len()を使用して、部分文字列が存在する回数を簡単に数えることができます。

これが私のコードの例です:

>>substring_matches = re.findall(randomVariableOfCharacters, document_to_be_searched)
>>
>>#^^ will return something like ['you', 'you', 'you']
>>#but could also return something like ['end.', 'end.', 'ends']
>>#if my variable is 'end.' because "." is a wildcard.
>>#I would rather it return ['end.', 'end.']
>>
>>occurrences_of_substring = len(substring_matches)

可能であれば、string.find()を使用する必要がないことを望んでいます。どんな助けやアドバイスも大歓迎です!

4

2 に答える 2

4

出現回数のみが必要な場合はstr.count()を使用できますが、 re.findall()と同等ではなく、カウントのみを取得します。

document_to_be_searched = "blabla bla bla."
numOfOcur = document_to_be_searched.count("bl")
于 2012-06-16T22:35:43.470 に答える
3

確かに: あなたのコードを見ると、あなたが探しているのはstring.count.

>>> 'abcdabc'.count('abc')
2

ただし、これは;と同等ではないことに注意してください。re.findallあなたの場合はより適切に見えますが。

于 2012-06-16T22:32:48.943 に答える