Разделить строку в Java с помощью регулярных выражений - PullRequest
0 голосов
/ 14 марта 2012

Я пытаюсь разбить строку, используя регулярное выражение "A. * B", которое прекрасно работает для извлечения строк между 'A' и 'B'.Но точка "."не включает символы новой строки \ n, \ r.Не могли бы вы рассказать мне, как этого добиться?

Спасибо


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

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

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

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

Ответы [ 6 ]

1 голос
/ 14 марта 2012

Скомпилируйте регулярное выражение с помощью этой опции: Pattern regex = Pattern.compile("A.*B",Pattern.DOTALL)

1 голос
/ 14 марта 2012

Попробуйте "A [. \\ s] * B"

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

1 голос
/ 14 марта 2012

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

import java.util.regex.Pattern;

Pattern pattern = Pattern.compile("A.*B", Pattern.MULTILINE);
pattern.split(string);
0 голосов
/ 14 марта 2012

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

0 голосов
/ 14 марта 2012

Попробуйте изменить регулярное выражение yor на "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

0 голосов
/ 14 марта 2012

Я предполагаю, что вы используете для этого 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

...