这是我的示例文件:
lineone one
RUN lineone two
lineone three
RUN lineone four
我想选择所有不以run开头的行,以下是我的方法:
^([^RUN])
是否可以匹配所有不以RUN开头的行,然后将它们附加到上一行的后面?像这样
lineone one RUN lineone two
lineone three RUN lineone four
答案 0 :(得分:6)
如果您的示例正确,则只需将"\nRUN"
替换为" RUN"
。
System.out.println(yourString.replaceAll("\nRUN", " RUN"));
结果:
lineone one RUN lineone two lineone three RUN lineone four
答案 1 :(得分:3)
答案 2 :(得分:0)
首先
^([^RUN])
无法正常工作,因为它会匹配任何不以R,U或N开头的行。
你应该使用lookahead:
^(?!RUN)
这应该做你想要的:
Pattern p = Pattern.compile("\n(RUN)", Pattern.DOTALL);
Matcher matcher = p.matcher("lineone one\nRUN lineone two\nlineone three\nRUN lineone four");
String replaceAll = matcher.replaceAll(" $1");
System.out.println(replaceAll);