如何在文件txt

时间:2018-12-15 16:16:43

标签: java regex

这是我的字符串

  

2007-01-12Jakistxt2008-01-31xxx2008-02-292008-15-102008-19-452009-05-0120999-11-11pppp2001-00-0109-01-012001-01-002009-01-1112009-02 -291998-11-11

我尝试以YYYY-MM-DD格式查找日期。我知道这是不可能的。 我设法打印了此结果

2007-01-12
2008-01-31
2008-02-292
2008-19-452
0999-11-11
2001-00-010
2001-01-002
2009-02-291 



     String regex4="\\d{4}-\\d{2}-\\d{2,3}";
     Pattern wzor4=Pattern.compile(regex4);
     Pattern wzor5=Pattern.compile(regex5);

    Matcher efekt4=wzor4.matcher(wyrazenie);
    String rezultat4="";

    while (efekt4.find()) {
        list422.add(efekt4.group());

    }
    for(int i=0;i<list422.size();i++) System.out.println(list422.get(i));`

2 个答案:

答案 0 :(得分:0)

尝试以下模式:(?(?<=^)|(?<=\D))\d{4}-\d{2}-\d{2}(?(?=$)|(?=\D))

它使用\d{4}-\d{2}-\d{2}来匹配您的strng格式。

此外,日期不能在任何数字后面或前面:

(?(?<=^)|(?<=\D))-有条件的查找:如果我们在字符串的开头,则开始匹配,否则,请确保前面的不是数字(\D

(?(?=$)|(?=\D))-前向类似于后向。

Demo

或者,您可以只使用\d{4}-\d{2}-\d{2},它们也可以彼此相邻匹配。

Demo

答案 1 :(得分:0)

我把它放在String regex4="(?(?<=^)|(?<=\D))\d{4}-\d{2}-\d{2}(?(?=$)|(?=\D))"; 和Eclipse说

 Unknown inline modifier near index 2

(?(?<= ^)|(?<= \ D))\ d {4}-\ d {2}-\ d {2}(?(?= $)|(?= \ D ))   ^