【发布时间】:2014-01-21 06:31:27
【问题描述】:
我正在尝试查找字符串中两个特定单词之间的时间字段。以下是我输入的几个示例
例子
The Big Cat eats at 3:49 AM and the Big Dog eats Daily (BBB) , On 12 at 5:00 AM done
The Big Cat eats at 3:49 AM and the Big Dog eats Daily (BBB) , On 12 at 11:00 PM done
预期输出
5:00 AM
11:00 PM
使用正则表达式
(?<=Dog\s(\w+))((\d):(\d)(\d)\sAM)(?=\sdone)
我似乎没有正确理解它。不确定中间的特殊字符是否会导致问题。但是,如果我使用任何字符而不是字母数字,那么我的两个关键字之间的所有单词都会被捕获。 谁能告诉我我在这里做错了什么?
【问题讨论】:
-
您可以使用 split() 两次来执行此操作(代码会很简单).. 使用 Regex 的任何具体原因??..
-
如果
regex不是必需的,这个怎么样?System.out.println(str.substring(str.indexOf(" at ")+4,str.indexOf(" and ")));:) -
@RafaEl - 我的意思是……有几种方法可以做这件事……而正则表达式使事情变得复杂……
-
@TheLostMind 是的,同意你的观点,
regex似乎不适合这种情况。 -
@TheLostMind 在这方面不能同意你的更多观点,但我正在尝试构建一个进行文本解析的工具,我想通过使用正则表达式提取数据而不是在其中进行操作来保持设计的通用性我的java代码
标签: java regex regex-lookarounds