Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.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 应该过滤掉新行而不是过滤新行的If语句。_Java_If Statement_Newline - Fatal编程技术网

Java 应该过滤掉新行而不是过滤新行的If语句。

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){

我正在编写一个正则表达式模式,它过滤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){

      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,我刚想出来,我马上回答我的问题。