1

好的,我仍在学习 Regex,我正在为我的手机制作语音助手,我希望它接受以下任何一项:

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

基本上我想要set和之间的每一个字timer

我正在尝试这个,但它不起作用。

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

另一个命令是关于取消计时器:

cancel the timer   
timer cancel  
cancel timer  

基本上,如果“取消”和“计时器”这两个词以任何组合出现在句子中,它应该取消计时器。

任何帮助,将不胜感激。

4

2 回答 2

2

你......可以做这样的事情:

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

这个捕获组会捕获任何东西。并且?使s可选。

对于另一个,我想你可以有类似的东西

(cancel).*?(timer)|(timer).*?(cancel)
于 2013-05-14T20:18:25.190 回答
0

在 perl 中会是这样的:

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

由于它在括号中,它将与 $1 匹配,如果您需要替换它,请在 // 之间放置一些内容

于 2013-05-14T20:19:53.207 回答