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}
谢谢你解决了这个问题