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

Regex 我需要正则表达式来替换除某些文本以外的所有内容,regex,Regex,我想编写一个正则表达式,它可以按以下示例的格式提取时间数据: 2 Hours 2 hours 2 Hours 30 minutes 2.5 hour 但当我测试它时,它分别匹配字符“our”和“in”。我只想匹配单词'Hour'和'Hour',而不是它们的字符子集。也许可以试试这样的方法 (\d+(?:\.\d+)?)\s(?:H|h)ours?(?:\s(\d+)\s(?:M|m)inutes?)? 第一组是小时数,第二组是分钟数,下面的正则表达式将为您提供: ^(\d+(\.\d+)(H

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

2 Hours 2 hours 2 Hours 30 minutes 2.5 hour
但当我测试它时,它分别匹配字符“our”和“in”。我只想匹配单词'Hour'和'Hour',而不是它们的字符子集。

也许可以试试这样的方法

(\d+(?:\.\d+)?)\s(?:H|h)ours?(?:\s(\d+)\s(?:M|m)inutes?)?

第一组是小时数,第二组是分钟数,下面的正则表达式将为您提供:

^(\d+(\.\d+)(H | H)我们的(\d+(m | m)in(utes?)$

第一个捕获的组
\1
$1
就是您想要的。它将包含整个相关字符串

演示:

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

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

演示->

您能给我们提供准确输入和准确预期输出的示例吗?您知道什么是字符类吗?(详细说明一下,如果您的正则表达式包含在
[
]
?)中,您使用的是哪种编程语言?哇,令人惊讶的是,我们的答案竟然如此相似!
/((?:\d+(?:[.\d]+)?\s+hours?)(?:\s+\d+?\s+minutes?)?)/i