8

我正在尝试让正则表达式适用于以下场景,但遇到了一些麻烦。下面是场景。

我的字符串如下所示:

"The office timing (h) is from 8h to 18h."

从上面的字符串我需要"8h""18h".

到目前为止,我已经这样做了"[0-9]*[h]"。但这给了我"h"和。"8h""18h"

那里的专家有什么想法吗?

4

5 回答 5

11

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

+意味着它必须出现一次或多次。并且没有用括号括h起来,因为它是独立的。

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

于 2012-05-28T14:16:09.937 回答
3

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

[0-9]+[小时]

在正则表达式中:

* 表示匹配任意数量的先前标记(包括零)

+ 表示匹配任意数量的先前标记(至少一个)

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

于 2012-05-28T14:18:57.280 回答
3

*在正则表达式中表示零次或多次重复。改为指定正确的重复次数。

"\b\d{1,2}h\b"

\d代表一位数。

{1,2}表示一到两次重复(的\d)。

\b表示单词的开头或结尾(因为没有字母或数字应该在模式之前或之后)。

它不会找到"h"or"123h""18hertz"

于 2012-05-28T14:22:06.557 回答
1

您可以使用此正则表达式:

\b\d+h\b
于 2012-05-28T14:17:04.940 回答
-3

即使这也会有所帮助:[0-9][0-9]*h这相当于[0-9]+h

于 2012-05-28T14:19:43.460 回答