【问题标题】:Regx for extracting substring from in between data using java使用java从数据之间提取子字符串的正则表达式
【发布时间】:2013-07-17 16:10:13
【问题描述】:
String line = "asdasdasdasd <meta name=\"generator\" content=\"WordPress 3.5.2\" /> asdasdasdasdasd";
Pattern p = Pattern.compile("<meta name=\"generator\" content=\"WordPress\\s+([\\d.]+)\" />");
Matcher m = p.matcher(line);
if(m.matches())
     System.out.println(m.group(1));
else
     System.out.println("not found");

我使用的 regex 没有给出想要的结果。我想要提供的字符串中的 wordpress 版本。

【问题讨论】:

    标签: java html regex


    【解决方案1】:

    Matcher#matches() 匹配字符串的开头。所以,你需要为完整的字符串构建正则表达式。

    或者,您可以将Matcher#find() 与字符串相关部分的正则表达式一起使用:

    Pattern p = Pattern.compile("content=\"WordPress\\s+([\\d.]+)\"");
    Matcher m = p.matcher(line);
    if(m.find())
         System.out.println(m.group(1));
    else
         System.out.println("not found");
    

    【讨论】:

      【解决方案2】:

      您必须转义点并接受更多数字以防万一

      Pattern p = Pattern.compile("WordPress\\s+([\\d+\\.]+)");
      

      【讨论】:

      • 你不需要在字符类中转义.。而且+ 也不是那里的量词。正则表达式没有任何问题,只是它的使用方式。
      猜你喜欢
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多