【问题标题】:Regex expression for setting a timer用于设置计时器的正则表达式
【发布时间】:2013-05-15 04:19:53
【问题描述】:

好的,我仍在学习 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

基本上我想要settimer 之间的每一个字。

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

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

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

cancel the timer   
timer cancel  
cancel timer  

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

任何帮助将不胜感激。

【问题讨论】:

  • enjoy :)
  • 谢谢,该网站有一些不错的功能。
  • 不客气,注意网站使用的是PHP的PCRE实现,所以你得看看你的regex flavor和PHP PCRE的区别

标签: regex timer


【解决方案1】:

你……可以这样做:

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

这个捕获组会捕获任何东西。而? 使s 成为可选的。

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

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

【讨论】:

    【解决方案2】:

    在 perl 中是这样的:

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

    由于它在括号中,它将匹配它到 $1,如果你需要替换它在 //

    之间放置一些东西

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 1970-01-01
      • 2021-05-22
      • 2013-05-01
      • 2016-06-18
      相关资源
      最近更新 更多