Проще всего извлечь из двух разных местоположений как два отдельных шага сопоставления. Также намного проще всего, если сначала разбить весь текст на абзацы.
Employee Id--> Employee16
(мне нужно 16)
Я бы выделил один такой:
regexp -line {^Employee(\d+),} $paragraph -> employeeNumber
(для этой задачи требуется режим сопоставления строк, а не режим сопоставления «всей строки» по умолчанию.)
Employee links--> Employee links:2
(мне нужно 2)
Для этого, опять же, уже предполагая, что мы смотрим только на общую запись для одного сотрудника:
regexp -line {^\s+Employee links:\s*(\d+)(.*)$} $paragraph -> links rest
В данном случае я извлек не только $links
, но и $rest
строки, поскольку, возможно, вам нужно подумать о том, имеет ли это значение. Конечно, может быть, что следующее еще более полезно:
regexp -line {^\s+Employee links:\s*(\d+)(?:\s+active,\s+(\d+)\s+inactive)?} \
$paragraph -> activeLinks inactiveLinks
В этом случае $inactiveLinks
будет иметь пустую строку, если присутствует только первое число (что, по-видимому, происходит, когда сотрудник неактивен; вам нужно выполнить тривиальный бит логики, чтобы привести в порядок случай).
Наконец, при использовании regexp
не забудьте проверить результат, чтобы увидеть, соответствует ли он!
Надеюсь, это поможет.