2010-02-14 32 views
10

我有句話。我想查找以該句子中的特定字符開始的所有單詞。我對編程和Python非常陌生,但從我所知道的這一點來看,這聽起來像是一個正則表達式問題。簡單的Python正則表達式查找模式

模式匹配代碼是什麼讓我能找到符合我的模式的所有單詞?

很多感謝,

布洛克

回答

14
import re 
print re.findall(r'\bv\w+', thesentence) 

將在與'v'開始,例如句子打印的每一個字。

使用字符串的split方法,作爲另一個答案提示,也不會識別,但空間分隔塊,可能包括標點符號。這re爲基礎的解決方案確實識別單詞(字母和數字,淨標點)。

+0

這似乎是一個很好的方法,因爲我希望在一個字之後直接避免逗號。我的問題是,如果我想讓單詞以@符號開頭,我無法讓這個工作。想法? 謝謝 – Btibert3

+0

在'\ b'之前添加'@?' - 在正則表達式模式開始處可選擇出現'@''(實際上可以省略'\ b',因爲'@ '然後'v'將_always_表示一個單詞邊界,不需要檢查;-)。 –

+0

這對我來說非常適合。你能設計一種方法來檢查結束字符嗎?在我的情況下,字符串以數字結尾。 – cutteeth

1
>>> sentence="a quick brown fox for you" 
>>> pattern="fo" 
>>> for word in sentence.split(): 
...  if word.startswith(pattern): 
...   print word 
... 
fox 
for 

拆分對空間的句子,使用循環搜索模式並打印出來。

1

我把Dive Into Python的建議放在第二位。但它基本上是:

m = re.findall(r'\bf.*?\b', 'a fast and friendly dog') 
print(m) 

\ b表示字邊界,而。*?確保我們存儲整個單詞,但是爲了避免太過分(技術上講,?稱爲懶惰操作符)。

1

你可以這樣做(不使用re雖然):

matching_words = [x for x in sentence.split() if x.startswith(CHAR_TO_FIND)] 

正則表達式工作太(見其他答案),但我認爲這個解決方案將是一個有點更具可讀性,並作爲初學者學習Python,你會發現列表解析(比如上面的解決方案)很重要,以獲得一個舒適的水平。