2013-05-14 32 views
1

好吧,我現在還在學習正則表達式,我撥打語音助理,我的電話,我想它接受任何操作:正則表達式表達用於設置計時器

set the timer for 5 minutes 
set timer for 5 minutes 
set a timer for 5 minutes 
set a goddamn timer for 5 minutes 
set this timer for 5 minutes 

基本上我想每一個在settimer之間的字。

我想這個,但它不工作。

set (the|a|.) timer for [1-9]{1,} (minute|minutes) 

另一個命令是關於取消定時器:

cancel the timer 
timer cancel 
cancel timer 

基本上,如果詞「取消」和「計時器」在句子中出現的任意組合應該取消計時器。

任何幫助,將不勝感激。

+3

[享受](http://regex101.com/r/hT6xT6):) – HamZa

+0

謝謝,該網站有一些不錯的功能。 – Kitze

+0

不客氣,請注意,該網站使用PHP的PCRE實現,因此您必須查看您的正則表達式風格和PHP PCRE之間的區別 – HamZa

回答

2

你......可以做這樣的事情:

set(.*?)timer for [1-9]{1,} minutes? 

此捕獲組會抓住任何東西。 ?使s可選。

至於其他人,我想你可以有類似

(cancel).*?(timer)|(timer).*?(cancel) 
0

在perl的,將是這樣的:

$value =~ s/^set (.*?)timer//s; 

由於它是在括號將它匹配到$ 1 ,如果你需要更換它放在//