2012-03-14 3 views
0

Я пытаюсь разбить строку, используя регулярное выражение «A. * B», которое отлично работает, чтобы извлекать строки между «A» и «B». Но точка. не содержит новых символов строки \ n, \ r. Не могли бы вы посоветовать мне, как это сделать?Разбить строку в java с помощью regex

Благодаря


спасибо всем. Pattern.DOTALL работал как шарм.

У меня был другой вопрос, связанный с этим. Что делать, если мне нужно извлечь все строки между «A» и «B» (которые в основном соответствуют указанному выше регулярному выражению).

Я пробовал использовать find() и group() класса matcher, но с рисунком ниже кажется, что возвращает всю строку.

Pattern p = Pattern.compile("A.*B",Pattern.DOTALL);

+1

делает 'A * b' работы? –

+0

Нет. Я уже пробовал это. – Leo

ответ

0

Посмотрите java.util.regex.Pattern.compile (String регулярного выражения, Int флагов), особами. флаг DOTALL

0

Я предполагаю, что вы используете Pattern, Matcher классы для этого.

Вы пытались предоставить MULTILINE вашему методу Pattern.compile()?

Pattern.compile(regex, Pattern.MULTILINE)

'' = Любой символ (может соответствовать или не соответствовать терминаторы линии)

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html#lt

1

Используйте java.util.regex.Pattern с флагом многострочного:.

import java.util.regex.Pattern; 

Pattern pattern = Pattern.compile("A.*B", Pattern.MULTILINE); 
pattern.split(string); 
1

Try «A [\ \ s] * B "

Или вы можете указать переключатель DOTALL так, чтобы". " будут включать в себя даже линейные терминаторы. Взгляните на документацию класса Pattern.

0

Попробуйте изменить yor regex на "A(.|\\s)*B" Это означает, что A followed by any character(.) or any white character(\s) any number of times followed by B (требуется двойной scaped \ s в коде Java).

Ссылка для регулярных выражений (конструкций, пространственных символов и т.д.) в Java: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

1

Компиляция регулярных выражений с этой опцией: [. \ п \ г] Pattern regex = Pattern.compile("A.*B",Pattern.DOTALL)

Смежные вопросы