2015-11-13 6 views
1

У меня есть текст:Regex: получить 2 значения из нескольких строк

Session Information 

Specification: msl2_1_rx2_file 
Session ID: 2015/11/13-19 
Type: Backup 
Session Owner: mycompany.com 
Status: Completed 
Mode: incr 
Start Time: 11/13/2015 12:07:33 PM 
Queuing: 0:00 
Duration: 2:24 
GB Written: 596.05 
# Media: 2 
# Errors: 1 
# Warnings: 0 

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

Но я знаю только то, как иметь одно значение:

/Specification: (.+)/m 

http://www.regexr.com/3c6qn

/# Errors:\ (.+)/ 

http://www.regexr.com/3c6qq

Как получить это 2 значения из одного регулярного выражения? Спасибо!

+0

Если ваш код находится в JavaScript, мы можем показать, как использовать регулярные выражения, с которыми мы столкнулись. Укажите язык/инструмент, который вы используете. –

ответ

0

сделать его глобальным и тест на один или другой -

/Specification: (.+)|# Errors:\ (.+)/gm 

Чтобы извлечь значения получить захват группы 1 и 2.

Example here

С уважением

0

Вы может использовать чередование и ^ стартовый якорь:

/^(?:Specification:|# Errors:) *(.+)/gm 

См regex demo

Regex пробоя:

  • ^ - начало строки (как /m навязывает ^, чтобы соответствовать начало строки)
  • (?:Specification:|# Errors:) - соответствует или Specification: или # Errors:
  • * - 0 или более регулярных пространств
  • (.+) - все символы до конца строки

В результате вы должны находится внутри группы 2:

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