Java 应该过滤掉新行而不是过滤新行的If语句。
我正在编写一个正则表达式模式,它过滤HTML标记并只打印有效标记的内容以供练习。虽然模式本身似乎与标记正确匹配,但我在打印它们时遇到了一个问题Java 应该过滤掉新行而不是过滤新行的If语句。,java,if-statement,newline,Java,If Statement,Newline,我正在编写一个正则表达式模式,它过滤HTML标记并只打印有效标记的内容以供练习。虽然模式本身似乎与标记正确匹配,但我在打印它们时遇到了一个问题 import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class HTMLPattern{ public static void main(String[] args){
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class HTMLPattern{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int testCases = Integer.parseInt(in.nextLine());
while(testCases>0){
String line = in.nextLine();
String tagPattern = "<([^>]+)>([^<]*?)</\\1>";
Pattern p = Pattern.compile(tagPattern, Pattern.MULTILINE);
Matcher m = p.matcher(line);
if(m.find()){
//checks if the output equals a newline
if(m.group(2).matches("[\\n\\r]+")){
System.out.println("None");
}else{
System.out.println(m.group(2));
}
}else{
System.out.println("None");
}
testCases--;
}
}
}
但是它是:
test
test
我的问题是:为什么我的if语句没有捕捉到换行符并打印“None”没有新行,只有空字符串,请尝试如下匹配空字符串:
if (m.group(2).matches("^$")) {
或检查字符串的长度:
if (m.group(2).length() == 0) {
没有新行,只有空字符串,请尝试如下匹配空字符串:
if (m.group(2).matches("^$")) {
或检查字符串的长度:
if (m.group(2).length() == 0) {
结果表明if语句中没有换行符。虽然我以前尝试检查
if(m.group(2)==null)
失败,但该方法正确匹配了我测试的null值:
if(m.find()){
if(m.group(2).isEmpty()){
System.out.println("None");
}else{
System.out.println(m.group(2));
}
}else{
System.out.println("None");
}
结果表明if语句中没有换行符。虽然我以前尝试检查
if(m.group(2)==null)
失败,但该方法正确匹配了我测试的null值:
if(m.find()){
if(m.group(2).isEmpty()){
System.out.println("None");
}else{
System.out.println(m.group(2));
}
}else{
System.out.println("None");
}
我在
中没有看到新行字符。如果要打印正在查看的输出,则应该测试空节点值for@Vimsha嗯。我假设这是一个换行符,因为我以前所有检查空值的尝试都失败了。@Vimsha Nvm,我刚刚找到了它,我马上回答我的问题。我在
中没有看到新行字符。如果要打印正在查看的输出,则应该测试空节点值for@Vimsha嗯。我假设这是一个换行符,因为我以前所有检查空值的尝试都失败了。@Vimsha Nvm,我刚想出来,我马上回答我的问题。