我有一个字符串变量,其中包含一些带有时间的文本。 例如,
// string str looks like this
String str = "XYZ SuperMarket 10.00AM - 10.00PM"
有没有一种方法或库可以用来检查这个字符串
由时间组成(类似于 Jsoup 或 Regex)?我想修剪时间内容并将其存储在名为“时间”的不同字符串中。真的可以这样处理字符串吗 方式。
最佳答案
我没有 Java 编程知识,因此无法提供用于此任务的 Java 代码。
但我可以提供以下正则表达式:
((?:[01][0-9]|[0-9])(?:[.:][0-5][0-9]){0,2} ?[AP]M)
整个表达式开头和结尾的 (
...)
标记整个找到的字符串,可能需要将找到的字符串放入字符串变量中。
(?:[01][0-9]|[0-9])
是 OR 表达式的非标记组。此 OR 表达式可查找 00 到 19 范围内的 2 位数字,或仅查找 0 到 9 范围内的单个数字。(是的,大于 12 的数字也会匹配,但这重要吗?我想,它不重要。保留它简单意味着让它变得更快。)
(?:[.:][0-5][0-9]){0,2}
是一个非标记组,应用于字符串以搜索 0、1 或2次。它与分钟和秒相匹配,其间的分隔符可以是点或冒号。分钟/秒必须有 00 到 59 范围内的 2 位数字。(所以这个表达式不适用于值为 60 的闰秒,但我很确定您从未见过带有闰秒的时间。)时间字符串可以仅包含小时,也可以包含小时+分钟,或者包含小时+分钟+秒。由于我从未见过一小时后带有一位数分钟或秒的时间字符串,因此对两位数分钟/秒的限制应该不是问题。
?
匹配单个空格,该空格可能但大多数不存在于时间字符串中。
[AP]M
与 AM 或 PM 匹配,因为这看起来是您在搜索字符串中期望的时间格式。
注意:有数十种不同的时间格式。因此,检查字符串中所有可能的时间格式将需要大量正则表达式。
关于java - 检查 Java 字符串中是否存在时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24227968/