我正在尝试获取涵盖以下组合的正则表达式:

1h
2m
3s
1h 2m
1h 2m 3s
2m 3s


到目前为止,我有下一个:(\ d + h \ s?)?(\ d + m \ s?)?(\ d + s \ s?),但它不能正常工作。

谁能给我一个主意?

最佳答案

试试这个正则表达式:

(?:\d+h)(?: \d+m(?: \d+s)?)?|\d+m(?: \d+s)?|\d+s


说明:

(?:\d+h)(?: \d+m(?: \d+s)?)?     match 1h or 1h 2m or 1h 2m 3s
\d+m(?: \d+s)?                   match 2m or 2m 3s
\d+s                             match 3s


请点击下面的Java代码链接,以针对您的示例输入演示此正则表达式。

Rextester

10-05 18:24