Regex 如何简化正则表达式?

Regex 如何简化正则表达式?,regex,Regex,我试图从文本中获取剩余时间数据,但时间是以月、周、日或小时而不是数字来表示的。我写了这个正则表达式,但有点复杂。我如何简化它 [0-99] month[s]?|[0-99] week[s]?|[0-99] day[s]?|[0-99] hour[s]? 示例输出: 2 days 4 hours [0-99]相当于一个从0到9的字符集,加上字符9——因此它相当于[0-9]——后者(通常)相当于\d 包含单个字符的字符集是多余的-只需使用单个字符即可 最后,由于两种交替方式之间唯一的变化是单词,

我试图从文本中获取剩余时间数据,但时间是以月、周、日或小时而不是数字来表示的。我写了这个正则表达式,但有点复杂。我如何简化它

[0-99] month[s]?|[0-99] week[s]?|[0-99] day[s]?|[0-99] hour[s]?
示例输出:

2 days 4 hours

[0-99]
相当于一个从0到9的字符集,加上字符9——因此它相当于
[0-9]
——后者(通常)相当于
\d

包含单个字符的字符集是多余的-只需使用单个字符即可

最后,由于两种交替方式之间唯一的变化是单词,因此在单词周围放置一个组,并在组内交替:

\d (?:month|week|day|hour)s?\d
这相当于你原来的模式。但听起来您可能希望最多匹配2个数字,在这种情况下,您可以将其调整为:

\d{1,2} (?:month|week|day|hour)s?\d{1,2}

谢谢你解决了这个问题