有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

删除正则表达式Java后面的所有字符

我有一个日期,看起来像“9/22/2015”,但有时像以下任何一个:

"9/22/2015 1"
"9/22/2015 ee"

因此,我在Java中与regrex签入,如下所示

Pattern patt = Pattern.compile("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
if (patt.matcher(start).find()) {
      System.out.println("match");
}

但这些“9/22/2015 1”、“9/22/2015 ee”也匹配吗?我想做的是检查“9/22/2015”,然后再检查之后的任何事情,不管是什么,我怎么能这样做

我也试过Pattern patt = Pattern.compile("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");,但在“9/22/2015 1”、“9/22/2015 ee”中也实现了

谢谢


共 (4) 个答案

  1. # 1 楼答案

    使用此正则表达式"^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$"

    {cd2}应该与之合作

  2. # 2 楼答案

    我相信您希望使用Matcher(特别是^{})来提取捕获的组:

        String start = "\"9/22/2015 1\"";
        Pattern patt = Pattern.compile("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
        Matcher match = patt.matcher(start);
        if (match.find()) {
            System.out.println(match.group()); // prints: 9/22/2015
        }
    
  3. # 3 楼答案

    如果您需要在日期之后没有任何内容,请告诉regexp在日期之后有一个新行\n或行尾$,或者可能有一些额外的空间。检查\n是否有多行,检查$是否有多行,如果有1行/字符串。实际上,您告诉regexp查找类似于日期格式的字符串。它找到了。您没有告诉regexp在那之后什么可以或什么不可以

  4. # 4 楼答案

    matches()代替find()

    Pattern patt = Pattern.compile("([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})");
    if (patt.matcher(start).matches()) {
          System.out.println("match");
    }
    
    • matches()将尝试匹配完整字符串
    • find()将扫描字符串,直到找到一个匹配项