我有下面这句话当前向传感摄像头(FSC)检测到前方车辆或行人,并确定与前方车辆或行人的碰撞不可避免时,如果前方车辆以4至80 km/h(2至50 mph)的车速行驶,如果前方行人以2至50 km/h的车速行驶我的目标是获得所有的速度范围。目前,我使用正则表达式
\d+ to \d+\s?(km\/hr|km\/h| mph)
唯一的问题是我在正则表达式中硬编码了一个to。速度也可以指定为5 - 25公里每小时。我不知道什么是通用字符序列可以满足两个数字之间的任何东西
deyfvvtc1#
您可以将k设置为可选,并使用以下替代方法:
k
\b\d+ (?:-|to) \d+\s?(?:km\/hr?| k?mph)\b
模式匹配:
\b
\d+
(?:-|to)
-
to
\d+\s?
(?:
km\/hr?| k?mph
km/h
km/hr
mph
kmph
)
参见regex101 demo请注意,k?mph中还有一个空格,您需要匹配2个空格,因为\s?也是如此如果不需要2个空格,可以写成:
k?mph
\s?
\b\d+ (?:-|to) \d+(?: ?km\/hr?| k?mph)\b
1条答案
按热度按时间deyfvvtc1#
您可以将
k
设置为可选,并使用以下替代方法:模式匹配:
\b
字边界\d+
匹配1+位数和``(?:-|to)
与-
或to
匹配\d+\s?
将1+位数与可选的空白字符匹配(?:
备选项的非捕获组km\/hr?| k?mph
匹配km/h
km/hr
mph
kmph
中的任一项)
关闭群组\b
字边界参见regex101 demo
请注意,
k?mph
中还有一个空格,您需要匹配2个空格,因为\s?
也是如此如果不需要2个空格,可以写成: