return'字符和新行用于正则表达式java 8
我在java 8中遇到了一个奇怪的行为,即使用正则表达式中的?\n来解析在java 8下运行IDE eclipse的文本文件 请参阅regex101测试演示 正则表达式在带有IDEEclipse的Java7中工作良好 但是如果IDE在Java8中运行,它就不起作用了,请参见下面的代码 有人能帮我解决这个问题吗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
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