我有句話。我想查找以該句子中的特定字符開始的所有單詞。我對編程和Python非常陌生,但從我所知道的這一點來看,這聽起來像是一個正則表達式問題。簡單的Python正則表達式查找模式
模式匹配代碼是什麼讓我能找到符合我的模式的所有單詞?
很多感謝,
布洛克
我有句話。我想查找以該句子中的特定字符開始的所有單詞。我對編程和Python非常陌生,但從我所知道的這一點來看,這聽起來像是一個正則表達式問題。簡單的Python正則表達式查找模式
模式匹配代碼是什麼讓我能找到符合我的模式的所有單詞?
很多感謝,
布洛克
import re
print re.findall(r'\bv\w+', thesentence)
將在與'v'
開始,例如句子打印的每一個字。
使用字符串的split
方法,作爲另一個答案提示,也不會識別話,但空間分隔塊,可能包括標點符號。這re
爲基礎的解決方案確實識別單詞(字母和數字,淨標點)。
import re
s = "Your sentence that contains the word ROAD"
s = re.sub(r'\bROAD', 'RD.', s)
print s
爲什麼替換和字符串結束? –
>>> sentence="a quick brown fox for you"
>>> pattern="fo"
>>> for word in sentence.split():
... if word.startswith(pattern):
... print word
...
fox
for
拆分對空間的句子,使用循環搜索模式並打印出來。
我把Dive Into Python的建議放在第二位。但它基本上是:
m = re.findall(r'\bf.*?\b', 'a fast and friendly dog')
print(m)
\ b表示字邊界,而。*?確保我們存儲整個單詞,但是爲了避免太過分(技術上講,?稱爲懶惰操作符)。
你可以這樣做(不使用re
雖然):
matching_words = [x for x in sentence.split() if x.startswith(CHAR_TO_FIND)]
正則表達式工作太(見其他答案),但我認爲這個解決方案將是一個有點更具可讀性,並作爲初學者學習Python,你會發現列表解析(比如上面的解決方案)很重要,以獲得一個舒適的水平。
這似乎是一個很好的方法,因爲我希望在一個字之後直接避免逗號。我的問題是,如果我想讓單詞以@符號開頭,我無法讓這個工作。想法? 謝謝 – Btibert3
在'\ b'之前添加'@?' - 在正則表達式模式開始處可選擇出現'@''(實際上可以省略'\ b',因爲'@ '然後'v'將_always_表示一個單詞邊界,不需要檢查;-)。 –
這對我來說非常適合。你能設計一種方法來檢查結束字符嗎?在我的情況下,字符串以數字結尾。 – cutteeth