好的,我还在学习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
基本上,如果句子中的任何组合出现“取消”和“计时器”这两个词,它应该取消计时器。
任何帮助都将不胜感激。
答案 0 :(得分:2)
你......可以这样做:
set(.*?)timer for [1-9]{1,} minutes?
此捕获组将捕获任何内容。 ?
使s
成为可选项。
对于另一个,我想你可以有像
这样的东西(cancel).*?(timer)|(timer).*?(cancel)
答案 1 :(得分:0)
在perl中它会是这样的:
$value =~ s/^set (.*?)timer//s;
因为它在括号中它会匹配到$ 1,如果你需要替换它,在//之间放一些东西