我想编写一个正则表达式,它可以按照以下示例中的格式提取时间数据:
2 Hours 2 hours 2 Hours 30 minutes 2.5 hour
我正在尝试完成它并按正则表达式编写 -
[^0-9\s(H|h)our(M|m)in\.]?
但是当我测试它时 - 它分别匹配'我们'和'in'字符。我想只匹配“小时”和“小时”这两个词,而不是他们角色的子集。
答案 0 :(得分:0)
也许尝试这样的事情?
(\d+(?:\.\d+)?)\s(?:H|h)ours?(?:\s(\d+)\s(?:M|m)inutes?)?
第一组是小时数,第二组是分钟数
答案 1 :(得分:0)
以下正则表达式将为您做到这一点:
^(\d+(\.\d+)? (H|h)ours?( \d+ (m|M)in(utes?)?)?)$
第一个捕获的群组\1
或$1
就是您想要的。它将包含整个相关字符串
答案 2 :(得分:0)
对于PHP
(PCRE),您可以使用:
/((?:\d+(?:[.\d]+)?\s+hours?)(?:\s+\d+?\s+minutes?)?)/i
DEMO - > http://regex101.com/r/lP3oM1