我正在尝试让正则表达式适用于以下场景,但遇到了一些麻烦。下面是场景。
我的字符串如下所示:
"The office timing (h) is from 8h to 18h."
从上面的字符串我需要"8h"
和"18h"
.
到目前为止,我已经这样做了"[0-9]*[h]"
。但这给了我"h"
和。"8h"
"18h"
那里的专家有什么想法吗?
替换[0-9]*[h]
为[0-9]+h
+
意味着它必须出现一次或多次。并且没有用括号括h
起来,因为它是独立的。
您还可以使用\d+h
以提高可读性(\d
匹配任何数字)。
将 * 替换为 +(加号),即
[0-9]+[小时]
在正则表达式中:
* 表示匹配任意数量的先前标记(包括零)
+ 表示匹配任意数量的先前标记(至少一个)
此外, h 周围的方括号是多余的,因为您只匹配单个字符。
*
在正则表达式中表示零次或多次重复。改为指定正确的重复次数。
"\b\d{1,2}h\b"
\d
代表一位数。
{1,2}
表示一到两次重复(的\d
)。
\b
表示单词的开头或结尾(因为没有字母或数字应该在模式之前或之后)。
它不会找到"h"
or"123h"
或"18hertz"
。
您可以使用此正则表达式:
\b\d+h\b
即使这也会有所帮助:[0-9][0-9]*h
这相当于[0-9]+h