我需要正则表达式来替换某些文本以外的所有内容

时间:2014-04-21 13:10:24

标签: regex

我想编写一个正则表达式,它可以按照以下示例中的格式提取时间数据:

2 Hours
2 hours
2 Hours 30 minutes
2.5 hour

我正在尝试完成它并按正则表达式编写 -

[^0-9\s(H|h)our(M|m)in\.]?

但是当我测试它时 - 它分别匹配'我们'和'in'字符。我想只匹配“小时”和“小时”这两个词,而不是他们角色的子集。

3 个答案:

答案 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就是您想要的。它将包含整个相关字符串

演示:http://regex101.com/r/xQ6rF3

答案 2 :(得分:0)

对于PHP(PCRE),您可以使用:

/((?:\d+(?:[.\d]+)?\s+hours?)(?:\s+\d+?\s+minutes?)?)/i

DEMO - > http://regex101.com/r/lP3oM1