我想出了以下正则表达式:
(\d*.*\d[am|pm])\w
匹配以下示例文本:
上午08点30分,下午5时30
8 AM-5PM
我希望我的正则表达式能够逃脱连字符并返回以下匹配项:
8.30am
5.30pm
8am
5pm
不幸的是,目前我的正则表达式在每种情况下匹配整行。
答案 0 :(得分:2)
你不能使用"整个单词"或在字符类内部交替。它目前匹配以下任何字符:(a
,m
,|
,p
,m
)。一个类匹配 set 字符中的任何一个字符。
我会写正则表达式如下:
\d+(?:\.\d+)?[ap]m
<强>解释强>:
\d+ # digits (0-9) (1 or more times)
(?: # group, but do not capture (optional):
\. # '.'
\d+ # digits (0-9) (1 or more times)
)? # end of grouping
[ap] # any character of: 'a', 'p'
m # 'm'
或者您甚至可以将其简化为:
[\d.]+[ap]m