2016-12-12 5 views
3

У меня есть регулярное выражение, чтобы успешно извлечь что-либо сразу после «Abc 123», но оно ничего не извлекает из новой строки.Как Regex и извлекать даже новую строку до матча

enter image description here

Есть ли способ, что я могу использовать регулярное выражение для извлечения следующего:

"Abc 123 def 
ghi 
jkl" 
"Abc 123 def ghi jkl mno" 
"Abc 123 def ghi jkl 
mno" 

Я использую Regex в Talend.

+1

Вы, кажется, спрашиваете о неработающем коде. Но вы забыли опубликовать этот код.Подсказка: потрачено меньше времени на создание скриншотов; просто отложите текст, с которым работаете. Делает вещи намного проще для всех. – GhostCat

+0

Попробуйте '/^(\ w +) \ s (\ d +) (. * (?: \ R? \ N (?! \ W + \ s \ d). *) *)/Gm'. Не уверен, что вы указали правильный ожидаемый результат. –

+0

@ WiktorStribiżew какой желаемый результат вы предположили? – xenteros

ответ

0

(\w)+\s(\d+)((.|\R)+) - это то, что вы хотите, так что после его побега это будет: (\\w)+\\s(\\d+)((.|\\R)+).
\R - это новая группа в Java regex, доступная с Java 8 - она ​​обозначает разрыв строки. Оба: \r\n и \n.

Если вы только позволяют один разрыв строки:
(\w)+\s(\d+)((.+)(\R.+){0,1})

Я думаю, что вы должны указать более, что ваш желаемый результат, но от этого ответа вы можете узнать, как включать в себя несколько линий или до 2-х линий

1

Я думаю, вы хотите вывести подстроки, которые начинаются в начале строки с 1 + словом слов, затем пробел, затем 1 или более цифр и охватывают несколько строк до одного и того же шаблона.

Вы можете использовать следующее регулярное выражение (обратите внимание на флаги и обозначения могут отличаться в зависимости от языка, который вы используете):

/^(\w+)\s(\d+)(.*(?:\r?\n(?!\w+\s\d).*)*)/gm 

См regex demo.

Детали:

  • ^ - начало линии
  • (\w+) - Группа 1: одно или несколько слов символов
  • \s - 1 пробельные
  • (\d+) - Группа 2: один или больше цифр
  • (.*(?:\r?\n(?!\w+\s\d).*)*) - Группа 3:
    • .* - любые 0+, кроме разрыва строки символов обугливает
    • (?:\r?\n(?!\w+\s\d).*)* - ноль или более последовательностей:
      • \r?\n - разрыв строки ...
      • (?!\w+\s\d) - что не последовало 1+ слово символы, пробелы, 1+ цифры
      • .* - любые 0+, кроме символов разрыва строки симв

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

  • Нет связанных вопросов^_^