Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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,我已经编写了下面的正则表达式,因此,该正则表达式将与输入不匹配;它正在工作,但循环运行无限时间。如何解决这个问题 String originalRegex ="(?s)\\00|\\+ADw-|\\+AD4-|%[0-9a-f]{2}|System[.][a-z]|javascript\\s*:|>(?:\".*|^'.*|[^a-z]'.*|'[^a-z].*|')[-+\\*/%=&|^~\"']|\\?.*<:|\\(\\s*[a-z]{2,}\\.[a-z]{2,}.

我已经编写了下面的正则表达式,因此,该正则表达式将与输入不匹配;它正在工作,但循环运行无限时间。如何解决这个问题

String originalRegex ="(?s)\\00|\\+ADw-|\\+AD4-|%[0-9a-f]{2}|System[.][a-z]|javascript\\s*:|>(?:\".*|^'.*|[^a-z]'.*|'[^a-z].*|')[-+\\*/%=&|^~\"']|\\?.*<:|\\(\\s*[a-z]{2,}\\.[a-z]{2,}.*\\)";
String xmlData = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><configuration xmlns=\"http://www.example.com/api/2.2\" timestamp=\"str111\" version=\"2.2\"><domain account=\"4af17966-c841-4b97-a94a-edd7a0769\" /></configuration>";
String freetext = ">(?:\".*|^'.*|[^a-z]'.*|'[^a-z].*|')[-+\\*/%=&|^~\"']|\\?.*<:";
final Pattern PATTERN_1 = Pattern.compile(freetext);
Matcher matcher = PATTERN_1.matcher(xmlData);

while (!matcher.find()) {
    System.out.println("Good Job");
}
“代码>字符串起源于该地区的政府监管局(代码>代码>字符串起源于该地区的政府监管局(代码>代码>字符串)的<<<<代码>字符串原初regReReReReG=<<<<代码>字符串原准准政府(代码>字符串)的<<<<该公司(s)们们)的<10-10-10 10-10-10-10-10-10-10-4-4-4-AD4-4-4-[0-9-9 a-9 a-f-f[2-f]{{{2-2-2-2-2-2-2}}系统[2-10-2-10-10-10-10-10-10-10-10-10 10-10-10-10-10-10-10-5 5”系统[10-10-10-10-10-10-10-10-10-10-3”系统[[[[[[[10-3]系统[[[[[[[[[*/%=&| ^ ~\“']| \?.*Java的
.find()
方法返回“true if,且仅当,输入序列的子序列与此匹配器的模式“-”匹配。在代码中,如果未找到匹配项,则:

while (!matcher.find()) {
    System.out.println("Good Job");
}
评估结果为:

while (!false) {
    System.out.println("Good Job");
}
或者更简单一点:

while (true) {
    System.out.println("Good Job");
}
因此,您的无限循环。

Java的
.find()
方法返回“如果且仅当输入序列的子序列匹配此匹配器的模式”-。在代码中,如果未找到匹配项,则:

while (!matcher.find()) {
    System.out.println("Good Job");
}
评估结果为:

while (!false) {
    System.out.println("Good Job");
}
或者更简单一点:

while (true) {
    System.out.println("Good Job");
}

因此,您的无限循环。

来自
Matcher.find()

尝试查找输入序列的下一个子序列 与模式匹配

此方法从匹配器区域的开始处开始,或者,如果 方法的上一次调用成功,匹配器 此后未重置,在第一个字符处未与 上一场比赛

如果匹配成功,则可以通过 开始、结束和分组方法

当且仅当输入序列的子序列时返回:true 匹配此匹配器的模式

你最好使用

while(matcher.find())
上面将尝试根据正则表达式模式连续匹配输入字符串

如果找不到模式,while循环将进入无限循环,或者如果找到匹配项,它将退出循环,无论哪种方式都没有用

while(!matcher.find())
但是,如果要检查它是否不匹配,则可以使用
if

if(!matcher.find()){
   //No Matches
} else {
   //Atleast one Match
} 

还有一个提示。如果您正在尝试解析XML,Regex可能不是合适的候选者。请尝试使用许多可用的XML解析器之一。

来自
Matcher.find()的javadocs

尝试查找输入序列的下一个子序列 与模式匹配

此方法从匹配器区域的开始处开始,或者,如果 方法的上一次调用成功,匹配器 此后未重置,在第一个字符处未与 上一场比赛

如果匹配成功,则可以通过 开始、结束和分组方法

当且仅当输入序列的子序列时返回:true 匹配此匹配器的模式

你最好使用

while(matcher.find())
上面将尝试根据正则表达式模式连续匹配输入字符串

如果找不到模式,while循环将进入无限循环,或者如果找到匹配项,它将退出循环,无论哪种方式都没有用

while(!matcher.find())
但是,如果要检查它是否不匹配,则可以使用
if

if(!matcher.find()){
   //No Matches
} else {
   //Atleast one Match
} 

还有一个提示。如果您试图解析XML,则Regex可能不是合适的候选者。请尝试使用许多可用的XML解析器中的一种。

哪种语言?如果提到这一点,原因可能很明显,因为有人可以在文档中查找
.find()
方法。你不应该使用regex来解析XML.replace
while
by
if
哪种语言?如果提到这一点,原因可能很明显,因为有人可以在文档中查找
.find()
方法。你不应该使用regex来解析XML.replace
while
by
if