Java正则表达式,时间模式
我试图得到一个正则表达式,其中包含以下组合:Java正则表达式,时间模式,java,regex,Java,Regex,我试图得到一个正则表达式,其中包含以下组合: 1h 2m 3s 1h 2m 1h 2m 3s 2m 3s 到目前为止,我有下一个:(\d+h\s?)(\d+m\s?)(\d+s\s?),但它工作不正常 谁能给我一个主意吗?希望这会有帮助。在这里,我们使用三种组合来防止匹配错误的模式,如1h 3s,因为在预期OP的问题中没有提到 或者,如果您想将数字限制为仅两位数,可以将此\d+更改为\d{2} 正则表达式:^\d+[hms]$| ^\d+[h]\s\d+[m](?:\s\d+[s]
1h
2m
3s
1h 2m
1h 2m 3s
2m 3s
到目前为止,我有下一个:(\d+h\s?)(\d+m\s?)(\d+s\s?),但它工作不正常
谁能给我一个主意吗?希望这会有帮助。在这里,我们使用三种组合来防止匹配错误的模式,如
1h 3s
,因为在预期OP的问题中没有提到
或者,如果您想将数字限制为仅两位数,可以将此\d+
更改为\d{2}
正则表达式:^\d+[hms]$| ^\d+[h]\s\d+[m](?:\s\d+[s])?$| ^\d+m\s\d+s$
1.^
字符串的开头
2.$
字符串结束
3.\s
用于单个空格
4.^\d+[hms]$
一个或多个数字,然后是h
、m
和s
5.^\d+[h]\s\d+[m](?:\s\d+[s])?$
这将匹配数字
然后h
,然后数字
然后m
最后数字
然后s
,这是可选的
6.^\d+m\s\d+s
这将匹配数字
然后m
然后数字
然后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代码,根据示例输入演示此正则表达式
通过使用|对感兴趣的匹配项进行分组,可以将字符串的有效部分与各自组中捕获的h、m和s进行匹配,以便检查特定行是否具有特定值。这是一种很好的方法,可以完成可选匹配和完整匹配
(?:\ ?(?:(\d+h)|(\d+m)|(\d+s)))+
()您的正则表达式在链接中工作,但在代码中不工作。请检查是否有任何解释?@YCF\L我相信我已经解决了这个问题。