Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 小调整,让这个正则表达式,让它做我想要的_Regex_Coldfusion - Fatal编程技术网

Regex 小调整,让这个正则表达式,让它做我想要的

Regex 小调整,让这个正则表达式,让它做我想要的,regex,coldfusion,Regex,Coldfusion,我编写了一个coldfusion正则表达式,以匹配页面源代码中的时间,在该页面中,时间分散在整个页面中,如下所示: <span>10.30</span> stuff <span>10.45-11.15</span> other stuff <span>17.00</span> 谢谢你纠正我的错误!当然与小b和连字符有关。您可以在可选的非捕获组(?:…)?的帮助下,使模式中与范围的第二部分匹配的部分成为可选的。请注意,您的正

我编写了一个coldfusion正则表达式,以匹配页面源代码中的时间,在该页面中,时间分散在整个页面中,如下所示:

<span>10.30</span> stuff <span>10.45-11.15</span> other stuff <span>17.00</span>

谢谢你纠正我的错误!当然与小b和连字符有关。

您可以在可选的非捕获组
(?:…)?
的帮助下,使模式中与范围的第二部分匹配的部分成为可选的。请注意,您的正则表达式也可以匹配多达29个小时,也可以进行更正

使用

详细信息

  • \b
    -前导词边界
  • (?:2[0-3]|[0-1][0-9])
    -要么
    2
    后跟一个从
    0
    3
    的数字,要么
    0
    /
    1
    后跟任意数字(=小时)
  • \。
    -文字点
  • [0-5][0-9]
    -从
    0
    5
    的数字,后跟任意数字(=分钟)
  • (?:-(?:2[0-3]|[0-1][0-9])\[0-5][0-9])?
    -一个可选的非捕获组,与
    -
    匹配,然后使用上面描述的相同模式
  • \b
    -尾随词边界

我认为您不需要“或”,只需按如下方式选择范围:

\b[0-2]\d\.[0-5]\d(-[0-2]\d\.[0-5]\d)?\b
以下是与JavaScript等效的代码段:
var re=/\b[0-2]\d\[0-5]\d(-[0-2]\d\[0-5]\d)?\b/g;
var s=“10.30材料10.45-11.15其他材料17.00”;

控制台日志(s.match(re))更改顺序,首先执行连字符。您还可以在一个捕获组中完成这一切,.Th*nks,Wiktor。(我不应该在这个盒子里写“谢谢”)我先尝试了你的解决方案,效果非常好。给了两年先生一个绿色的复选标记,因为他的解决方案又短又甜!但是,如果不是在这个框中,我应该在哪里说“谢谢”?@user1781623您可以使用答案旁边的箭头。向上投票是一种感谢用户的方式@用户1781623:很高兴它对你有用。请考虑接受这个答案(见)。
\b(?:2[0-3]|[0-1][0-9])\.[0-5][0-9](?:-(?:2[0-3]|[0-1][0-9])\.[0-5][0-9])?\b
\b[0-2]\d\.[0-5]\d(-[0-2]\d\.[0-5]\d)?\b