正規表現を書く方法。指定された文字列で始まるすべての単語を見つける方法。ここEX-正規表現を使用して単語の先頭を検索する
a = "asasasa sasDRasas dr.klklkl DR.klklklkl Dr klklklkklkl"
のために私はIGNORECASEを使っdr
によって開始されたすべての単語を取得したいです。私は試みましたが、すべての関数の結果はdr
が単語の先頭ではなく単語に含まれています。
ありがとうございます。
正規表現を書く方法。指定された文字列で始まるすべての単語を見つける方法。ここEX-正規表現を使用して単語の先頭を検索する
a = "asasasa sasDRasas dr.klklkl DR.klklklkl Dr klklklkklkl"
のために私はIGNORECASEを使っdr
によって開始されたすべての単語を取得したいです。私は試みましたが、すべての関数の結果はdr
が単語の先頭ではなく単語に含まれています。
ありがとうございます。
\b
を使用して単語境界を検索し、re.IGNORECASE
フラグを使用して大文字と小文字を区別することができます。
import re
a = "asasasa sasDRasas dr.klklkl DR.klklklkl Dr klklklkklkl"
for match in re.finditer(r'\bdr', a, re.IGNORECASE):
print 'Found match: "{0}" at position {1}'.format(match.group(0), match.start())
この意志出力:ここに
Found match: "dr" at position 18 Found match: "DR" at position 28 Found match: "Dr" at position 40
、\bdr
試合DRパターンが、それは、単語の開始時に発見された場合にのみ。これにより、の駆動のような文字列の一致も得られます。 drをユニークワードとして検索する場合は、\bdr\b
を使用してください。
私はre.finditer()
を使用して検索文字列をスキャンし、drのすべての一致をループで返します。 re.IGNORECASE
フラグは、dr
もDR
,Dr
およびdR
に一致します。
@Ferdinand Beyer's answerは、正規表現でそれを行う方法を示しています。しかし、あなたは簡単に文字列関数とそれを達成することができます
>>> a
'asasasa sasDRasas dr.klklkl DR.klklklkl Dr klklklkklkl'
>>> cleaned = "".join(" " if i in string.punctuation else i for i in a)
>>> cleaned
'asasasa sasDRasas dr klklkl DR klklklkl Dr klklklkklkl'
>>> [word for word in cleaned.split() if word.lower().startswith("dr")]
['dr', 'DR', 'Dr']
>>> string_to_search_in
'this a a dr.seuse dr.brown dr. oz dr noone'
>>> re.compile('\b*?dr.?\s*?\w+', re.IGNORECASE).findall(string_to_search_in)
['dr.seuse', 'dr.brown', 'dr. oz', 'dr noone']
「私が試した」 - 私たちはそれを見ることができますか? – eumiro