return'字符和新行用于正则表达式java 8

return'字符和新行用于正则表达式java 8,java,regex,Java,Regex,我在java 8中遇到了一个奇怪的行为,即使用正则表达式中的?\n来解析在java 8下运行IDE eclipse的文本文件 请参阅regex101测试演示 正则表达式在带有IDEEclipse的Java7中工作良好 但是如果IDE在Java8中运行,它就不起作用了,请参见下面的代码 有人能帮我解决这个问题吗 String REGEX = "\\s+NAME.*" + "\\r?\\n" + "IN

我在java 8中遇到了一个奇怪的行为,即使用正则表达式中的?\n来解析在java 8下运行IDE eclipse的文本文件

请参阅regex101测试演示

正则表达式在带有IDEEclipse的Java7中工作良好

但是如果IDE在Java8中运行,它就不起作用了,请参见下面的代码

有人能帮我解决这个问题吗

    String REGEX =
          "\\s+NAME.*" + "\\r?\\n"
          + "INFO-\\d{1,2}\\s+(?<name>[$\\w]+).*" + "\\r?\\n"
          + ".*" + "\\r?\\n"
            + ".*VERAT2.*" + "\\r?\\n"
            + "\\s+\\w+\\s+(?<verat2>\\w+).*"  
.......
.......

  Matcher matcher = Pattern.compile( REGEX ).matcher( data );
          
                        if( matcher.find() )
                        {
                      
    System.out.println("LEVELINFO=DATA=" + matcher.group("name") + " &&NAME=" + matcher.group("name") +" &&VERAT2="+ matcher.group("verat2")+"\n"); 
                        }
                    }
                            sc.close();
谢谢

可选正则表达式:


换行顺序模式为\\R,将所有\\R?\\n替换为\\R@WiKtor:我已用\\r更改了所有\\r?\\n,但它不起作用
DATA              NAME                    MAC1  
INFO-0            EQUIP                   Q10    
 
                  VL      VER     VERAT2     
                          V22     V22       
 
                
String regexName = "^DATA\\s+NAME\\s+.*?^\\S+\\s+(?<name>\\S+)";
String regexVerat2 = "\\s+VER\\s+VERAT2\\s+.*?^\\s+\\S+\\s+(?<verat2>\\S+)";
String regex = String.format("%s.*?%s", regexName, regexVerat2);
Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE|Pattern.DOTALL).matcher(input);
public static void main(String[] args) {
    String input =
              "DATA              NAME                                  MAC1  MAC2\n"
            + "INFO-0            EQUIP                                 Q10    Q13\n"
            + " \n"
            + "                  VL                    VER     VERAT2     MAP\n"
            + "                                        V22     V22       SELF100\n"
            + " \n"
            + "                  CMD1 CMD2       CMD3     CMD4     CMD4  \n"
            + "                  NO    44        FAL      BYTE\n";

    String regexName = "^DATA\\s+NAME\\s+.*?^\\S+\\s+(?<name>\\S+)";
    String regexVerat2 = "\\s+VER\\s+VERAT2\\s+.*?^\\s+\\S+\\s+(?<verat2>\\S+)";
    String regex = String.format("%s.*?%s", regexName, regexVerat2);
    Matcher matcher = Pattern.compile(regex, Pattern.MULTILINE|Pattern.DOTALL).matcher(input);

    while(matcher.find()) {
        System.out.println("Name: " + matcher.group("name"));
        System.out.println("Verat2 : " + matcher.group("verat2"));
    }
}
Name: EQUIP
Verat2 : V22