2012-01-13 61 views
2

我想匹配可選的表達式組合。在這個特定的例子中,我想匹配單詞。另外,如果單詞運行游泳先於(通過空格)然後匹配整個短語。因此,之間的表達式組合必須是可選的。正則表達式:可選組合表達式的最佳語法?

我希望所有的以下行是正匹配:

swim through <-- match entire phrase 
jump through <-- match entire phrase 
hike through <-- match only the word "through" 

要做到這一點,我可以使用下面的表達式:

(jump\W|swim\W)?through 

但是,是否有可能完成同樣的事情無需在jumpswim之後添加\W?我是想這樣的事情:

(jump|swim)?\W?through 

但是,不能正常工作,因爲這將包括通過在第三個例子先的空間。我只想要這個詞,而不是它周圍的空白。

+0

我真的不認爲它很重要。它仍然會產生非常類似的FSA – AlanFoster 2012-01-13 19:10:04

+0

當你說「匹配」時,你是否也指「提取」? – fge 2012-01-13 19:45:47

回答

3

這個怎麼樣:(?:(jump|swim)\W)?through

+0

完美。謝謝。 '?:'做什麼? – 2012-01-13 19:51:54

+0

它表示非捕獲組。 – 2012-01-13 19:52:57