java中的正则表达式匹配

时间:2010-12-29 13:01:24

标签: java regex

这是我的示例文件:

lineone one
RUN lineone two
lineone three
RUN lineone four

我想选择所有不以run开头的行,以下是我的方法:

^([^RUN])

是否可以匹配所有不以RUN开头的行,然后将它们附加到上一行的后面?像这样

lineone one RUN lineone two
lineone three RUN lineone four

3 个答案:

答案 0 :(得分:6)

如果您的示例正确,则只需将"\nRUN"替换为" RUN"

System.out.println(yourString.replaceAll("\nRUN", " RUN"));

结果:

lineone one RUN lineone two
lineone three RUN lineone four

ideone

答案 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);