regex 正则表达式帮助-如何使其通用

roqulrg3  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(113)

我有下面这句话
当前向传感摄像头(FSC)检测到前方车辆或行人,并确定与前方车辆或行人的碰撞不可避免时,如果前方车辆以4至80 km/h(2至50 mph)的车速行驶,如果前方行人以2至50 km/h的车速行驶
我的目标是获得所有的速度范围。目前,我使用正则表达式

\d+ to \d+\s?(km\/hr|km\/h| mph)

唯一的问题是我在正则表达式中硬编码了一个to。速度也可以指定为5 - 25公里每小时。
我不知道什么是通用字符序列可以满足两个数字之间的任何东西

deyfvvtc

deyfvvtc1#

您可以将k设置为可选,并使用以下替代方法:

\b\d+ (?:-|to) \d+\s?(?:km\/hr?| k?mph)\b

模式匹配:

  • \b字边界
  • \d+匹配1+位数和``
  • (?:-|to)-to匹配
  • \d+\s?将1+位数与可选的空白字符匹配
  • (?:备选项的非捕获组
  • km\/hr?| k?mph匹配km/hkm/hrmphkmph中的任一项
  • )关闭群组
  • \b字边界

参见regex101 demo
请注意,k?mph中还有一个空格,您需要匹配2个空格,因为\s?也是如此
如果不需要2个空格,可以写成:

\b\d+ (?:-|to) \d+(?: ?km\/hr?| k?mph)\b

相关问题