2014-12-31 4 views
0

Мой входной строки:Regex матч группы, если присутствует

/234243/source_path/a/b/c.test 

или что-то вроде:

/234243/source_path/a/b/c.test/check_w123 

Я хочу, чтобы регулярное выражение, чтобы соответствовать подстроки, начиная с source и check с результатом, как:

  • sourcesource_path/a/b/c.test/
  • check: check_w123

с использованием регулярных выражений, как /(?<source>source.*)(?<check>check.*)/ без ? в последней группе.

Мои регулярные выражения:

/(?<source>source.*)(?<check>check.*)?/ 

Мой Результат:

  • source: source_path/a/b/c.test/check_w123
  • check: nil

ответ

2

Просто включите .* внутри первую группу источников в это нежадная форма. И не забудьте добавить конец линейного якоря.

(?<source>source.*?)(?<check>check.*)?$ 

DEMO

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