如何編寫正則表達式,我們可以找到由指定字符串開始的所有單詞。爲前使用正則表達式搜索單詞的開始
a = "asasasa sasDRasas dr.klklkl DR.klklklkl Dr klklklkklkl"
在這裏我要取的是通過dr
使用忽略開始的所有單詞。我試過,但所有功能的結果,其中dr
在單詞中找不到單詞的開頭。
在此先感謝。
如何編寫正則表達式,我們可以找到由指定字符串開始的所有單詞。爲前使用正則表達式搜索單詞的開始
a = "asasasa sasDRasas dr.klklkl DR.klklklkl Dr klklklkklkl"
在這裏我要取的是通過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作爲唯一字,請使用\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