2015-06-05 3 views
1

Я пытаюсь извлечь имена файлов из длинного текста.Regex with capture groups

  • Имена файлов находятся в пути
  • Путь всегда приставочные с текстом Page source
  • Они могут появляться в любом месте на линии
  • текст содержит несколько строк
  • Все имена файлов оканчиваются .html

Учитывая следующий текст:

Page source file:///somedir/subdir/subdir/mysource.html lorem ipsum more text 
Lorem Ipsum ... 
Lorem Ipsum Page source file:///anotherdir/sub/dir/anothersource.html 

Я хочу, чтобы список всех имен файлов:

mysource.html 
anothersource.html 

Я пытался получить его с помощью следующих регулярных выражений:

// this only gets the last one (because of the greedy .*) 
Page source.*\/(.*\.html) 

// This gets all occurrences, but the value in my capture group is the 
// complete path starting after the first occurrence of/
Page source.*?\/(.*?\.html) 

Как я могу сказать регулярное выражение двигатель будет не жадным для внешнего выражения, но все еще достаточно жадным, чтобы перейти к последнему / перед номером .html?

+0

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

+0

Первое кажется ОК: https://regex101.com/r/pJ4cH3/1 Можете ли вы более точно описать проблему? – Antwane

+0

Я бы сказал https://regex101.com/r/dH3vI5/1. То есть '(?: Источник страницы). * \/(. *. Html)'. – fedorqui

ответ