Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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,我在一个字符串中包含上述内容,包括新行。现在我要剪断绳子 因此,只剩下带前导“R”的行。结果应该是: ER430;000000000; ADR03;000000020; RID01;000000000; RID02;000000000; 不幸的是,经过几个小时的努力,我还没有找到解决办法。。谢谢你 任何帮助 我的一些测试: RID01;000000000; RID02;000000000; 如果在代码中使用锚点^,$,则需要包含多行(?m)修饰符或DOTALL(?s)修饰符 content

我在一个字符串中包含上述内容,包括新行。现在我要剪断绳子 因此,只剩下带前导“R”的行。结果应该是:

ER430;000000000;
ADR03;000000020;
RID01;000000000;
RID02;000000000;
不幸的是,经过几个小时的努力,我还没有找到解决办法。。谢谢你 任何帮助

我的一些测试:

RID01;000000000;
RID02;000000000;

如果在代码中使用锚点
^
$
,则需要包含多行
(?m)
修饰符或DOTALL
(?s)
修饰符

 content = s.replaceAll("[^R].+;{1}.+;{1}", "");
 content = s.replaceAll("(?!R).*;{1}.*;{1}", "");
 content = s.replaceAll("(?!R)(.+;)(.+;)", "");

RID01;000000000;
RID02;000000000;

System.out.println(str.replaceAll((?m)(?使用多行标志
(?m)
,使
^
$
在换行符处匹配,使用点标记
(?s)
,使点匹配换行符:

System.out.println(str.replaceAll("(?m)(?<=\n|^)[^R][^;\n]*?;[^;\n]*;(\n|$)", ""));
开始很简单-然后是一个非R字符
*?^
将抓取下一行开始之前的每个字符-包括换行字符,添加另一个
\Z
结尾,以适应被删除的最后一行


请参阅,其中包括最后一行删除的边缘情况。

也谢谢。第一次尝试时,它与100%不匹配-因为在您的字符串中添加了新行。.波希米亚人的答案是。谢谢你们两位!效果很好!谢谢!!
System.out.println(str.replaceAll("(?m)(?<=\n|^)[^R][^;\n]*?;[^;\n]*;(\n|$)", ""));
str = str.replaceAll("(?sm)^[^R].*?(^|\\Z)", "");