соответствие регулярных выражений в Java - PullRequest
2 голосов
/ 29 декабря 2010

Вот мой пример файла:

lineone one
RUN lineone two
lineone three
RUN lineone four

Я хочу выбрать все строки, не начинающиеся с run, вот как я это сделал:

^([^RUN])

Возможно ли совпадениевсе строки не начинаются с RUN, а затем добавляются в конец предыдущей строки?как это

lineone one RUN lineone two
lineone three RUN lineone four

Ответы [ 3 ]

6 голосов
/ 29 декабря 2010

Если ваш пример верен, вам просто нужно заменить "\nRUN" на " RUN".

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

Результат:

lineone one RUN lineone two
lineone three RUN lineone four

ideone

3 голосов
/ 29 декабря 2010

использование str.startsWith("RUN");

0 голосов
/ 29 декабря 2010

Прежде всего

^([^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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...