如果逻辑不起作用,正则表达式匹配器检查

时间:2014-04-10 07:42:36

标签: java regex

嗨,您可以在下面看到我的代码。我的代码中有一些字符串Countryrankgrank,最初它们将为null,但如果正则表达式匹配,则应更改该值。但即使正则表达式匹配,它也不会改变它始终为空的值。如果我删除所有if语句并附加字符串它工作正常,但如果没有找到匹配则抛出异常。如果有逻辑,请告诉我如何查看。

System.err.println(content);
Pattern c = Pattern.compile("NAME=\"(.*)\" RANK");
Pattern r = Pattern.compile("\" RANK=\"(.*)\"");
Pattern gr = Pattern.compile("\" TEXT=\"(.*)\" SOURCE");
Matcher co = c.matcher(content);
Matcher ra = r.matcher(content);
Matcher gra = gr.matcher(content);
co.find();
ra.find();
gra.find();
String country = null;
String Rank = null;
String Grank = null;
if (co.matches()) {
   country = co.group(1);
}
if (ra.matches()) {
   Rank = ra.group(1);
}
if (gra.matches()) {
   Grank = gra.group(1);
}

2 个答案:

答案 0 :(得分:0)

你必须逃避一个\ - 使用双\\然后它应该有效。

试过这个?

while (co.find()) {
  System.out.print("Start index: " + co.start());
  System.out.print(" End index: " + co.end() + " ");
  System.out.println(co.group());
}

答案 1 :(得分:0)

我个人无法使用if来使你的程序工作,所以这不是逻辑问题,而是一个问题,它与我的字符串不匹配

所以我改变它以使某些东西起作用,也许你可以使用它:)

String content = "NAME=\"salut\" RANK=\"pouet\" TEXT=\"text\" SOURCE";
System.out.println(content);
System.out.println(content.replaceAll(("NAME=\"(.*)\"\\sRANK=\"(.*)\"\\sTEXT=\"(.*)\" SOURCE"), "$1---$2---$3"));

输出

  NAME="salut" RANK="pouet" TEXT="text" SOURCE
  salut---pouet---text