嗨,您可以在下面看到我的代码。我的代码中有一些字符串Country
,rank
和grank
,最初它们将为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);
}
答案 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