我正在尝试让正则表达式适用于以下场景,但遇到了一些麻烦。下面是场景。
我的字符串如下所示:
"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