2014-05-13 63 views
-2

我試圖使用Python提供的re模塊,但我認爲我錯過了一些東西。我想要做的是能夠說出一個給定的模式是否在一個句子中,例如:查找句子中的模式

我有我的句子「天空今天是藍色的」 而且我想找到blu* tod*模式是否在裏面這句話

我試過很多東西,如:

data = 'The sky is blue today' 
pattern = 'blu*\stod* 
re.match(pattern,data,re.IGNORECASE) // doesn't worked 
pattern = [blu+]\s[tod+] 
re.search(pattern,data) // Match everything in my sentence, even if the pattern isn't inside 

有人能幫助我嗎?或者,也許可以給我一個關於在句子中查找正則表達式的好教程?

謝謝。

回答

1

你誤會了*+在正則表達式做。它們不是文件通配符中的通配符:它們分別是前一個字符的「0或更多」或「1或更多」。所以它正在尋找類似「bluuuuuu todddddd」的東西。

另一個問題是,您可以交替使用matchsearch,但實際上match只會匹配字符串的開頭。您需要search這裏。

所以,你的代碼也許應該是:

data = 'The sky is blue today' 
pattern = 'blu.+\stod.+' 
re.search(pattern,data) 
+0

謝謝,它的工作! – Kobz

-1

你想了解貪婪與懶惰之間的區別,以及如何使用點。我喜歡這個網站:

http://www.regular-expressions.info/dot.html

http://www.regular-expressions.info/repeat.html

+0

雖然此鏈接可以回答這個問題,最好是在這裏有答案的主要部件,並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – Alberto

+0

他正在尋求一個很好的教程,而一個很好的教程,恕我直言,將不得不以鏈接的形式來。我也不想給他提供答案。 –