有什么办法可以在特定文本之后选择特定文本,并继续选择直到选择该单词。选中后,剩下的就剩下。
这里是例子
ABCDEF
JHJHJNJN<098978686
<jjg>
HGHJFGV XXXX
10-10-2018
JHKGHKGHG
JKHJHHJM
10-10-2019 JGHHGHGVH
HBVJHBHBB
只想在整个内容中选择该日期为10-10-2018,该日期总是在XXX之后,并带有空格。我不能只使用具有特定值的正则表达式(10-10-2018),因为可以更改日期,并且可能在某些地方也存在日期模式,例如最后一行中的示例。
请分享您的想法..
谢谢
答案 0 :(得分:0)
假设示例正确,则以下正则表达式将使用find()
仅提取日期,并确保设置了DOTALL
。
"XXXX.*?[\\s]+([\\d]{1,2}-[\\d]{1,2}-[\\d]{4})"
基本上,搜索XXX,然后搜索空格/换行符,然后找到日期。它将被放入一个组,然后可以将其提取。
尽管请确保选择“ DOTALL”,但您仍可以看到操作at this location。
public String getDate(String input)
{
String date = "";
Pattern dte = Pattern.compile("XXXX.*?[\\s]+([\\d]{1,2}-[\\d]{1,2}-[\\d]{4})", Pattern.DOTALL);
Matcher m = dte.matcher(input);
if (m.find() && m.groupCount() > 0) {
date = m.group(1);
}
return date;
}
测试用例
@Test
public void testData() throws Exception
{
RegEx_52879334 re = new RegEx_52879334();
String input = re.getInputData();
String date = re.getDate(input);
assertEquals("10-10-2018", date);
System.out.println("Found: " + date);
}
输出:
发现:2018年10月10日