正则表达式模式:数字后跟一个字符。

9
我正在尝试为以下场景编写正确的正则表达式,但遇到了一些问题。以下是该场景:
我的字符串如下所示:
"The office timing (h) is from 8h to 18h."
从上面的字符串中,我需要"8h"和"18h"。
到目前为止,我已经编写了"[0-9]*[h]"。但这给我返回了"h"、"8h"和"18h"。
有没有专家能提供任何建议?
5个回答

11

[0-9]*[h] 替换为 [0-9]+h

+ 表示必须出现一次或多次。而且括起来的 h 没有用,因为它是独立的。

您还可以使用 \d+h 来提高可读性(\d 匹配任何数字)。


4

将*替换为+(加号),即

[0-9]+[h]

在正则表达式中:

* 表示匹配前面的任意数量的项(包括零)。

+ 表示匹配前面的至少一个项目。

此外,方括号中的h是多余的,因为您只匹配单个字符。


3
* 在正则表达式中表示零个或多个重复。请指定正确的重复次数。 "\b\d{1,2}h\b" \d 代表一个数字。 {1,2} 表示一个或两个 \d 的重复。 \b 表示单词的开头或结尾(因为模式前面或后面不应有字母或数字)。
它不会匹配 "h""123h""18hertz"

1
您可以使用以下正则表达式:
\b\d+h\b

-3
甚至这也会有所帮助:[0-9][0-9]*h 相当于 [0-9]+h

[0-9][0-9]*h 不等同于 [0-9]+h。正如 @Li0liQ 所指出的那样,[0-9][0-9]*h 等同于 [0-9]{1,2}h - Nick M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接