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