Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果逻辑不起作用,则正则表达式匹配器签入_Java_Regex - Fatal编程技术网

Java 如果逻辑不起作用,则正则表达式匹配器签入

Java 如果逻辑不起作用,则正则表达式匹配器签入,java,regex,Java,Regex,嗨,你可以在下面看到我的代码。我的代码中有一些字符串Country、rank和grank,最初它们将为空,但如果对regex进行了处理,则应该更改值。但即使匹配了regex,它也不会改变值,它始终为null。如果我删除所有If语句并附加字符串,它就可以正常工作,但如果找不到匹配项,它就会抛出异常。请让我知道如何在if逻辑中检查此项 System.err.println(content); Pattern c = Pattern.compile("NAME=\"(.*)\" RANK"); Pat

嗨,你可以在下面看到我的代码。我的代码中有一些字符串
Country
rank
grank
,最初它们将为空,但如果对regex进行了处理,则应该更改值。但即使匹配了regex,它也不会改变值,它始终为null。如果我删除所有If语句并附加字符串,它就可以正常工作,但如果找不到匹配项,它就会抛出异常。请让我知道如何在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);
}

您必须转义一个
\
-使用两个
\\
,然后它就可以工作了

试过这个吗

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

就我个人而言,我不能让你的程序在有/没有
if
的情况下工作,所以这不是逻辑问题,只是它与字符串不匹配的问题

所以我改变了它,让它工作起来,也许你可以用它:)

输出

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

首先,您不应该让Maj作为第一个字符的变量不
字符串秩
-->
字符串秩
Grank
相同。第二,你确定它们符合你的模式吗?什么是Maj?我确信正则表达式是匹配的,因为它对我来说总是有效的,最初的My逻辑就像字符串country=co.group(1);类似地,对于所有其他字符串,当一些输入变量的正则表达式不匹配并且抛出异常时,问题就会出现。我想在if逻辑中处理它,使其为null或匹配的正则表达式值,希望您理解我的problemmaj=大写;)是否可以添加尝试解析的原始字符串内容;)字符串太大,无法粘贴,您可以将
.matches()
调用替换为
.find()
callsproblem不适用于正则表达式,它适用于if逻辑,正则表达式在没有if逻辑的情况下工作得很好谢谢这对我来说非常好最初我将所有字符串设为null,如果经过,我已经更改了字符串值。非常感谢。
  NAME="salut" RANK="pouet" TEXT="text" SOURCE
  salut---pouet---text