2016-02-17 2 views
-1

Я пытаюсь получить ссылки для всех pdfs 'в файле. Это мой курс.Regex "/~ ece742 [ w d /. ? = -] + . Pdf" останавливается после сопоставления "/ ~ ece742 /"

Имя файла - doku.php \ ID \ = лекции

Тип файла - HTML

grep -Eo '\/~ece742[\w\d\/\.\?\=\-]+\.pdf' doku.php\?id\=lectures 

Это регулярное выражение останавливается после обнаружения "/ ~ ece742 /".

Если я пишу

grep -Eo '\/~ece742\/\w+' doku.php\?id\=lectures 

он не найдет какой-нибудь текст после "/ ~ ece742 /", как "/ ~ ece742/abc123".

Вот один из блоков:

<td class="col1"> L6 <a href="/~ece742/f12/lib/exe/fetch.php?media=onur-18-742-fall12-lecture6-asymmetric-multicore-afterlecture.ppt" class="media mediafile mf_ppt" title="onur-18-742-fall12-lecture6-asymmetric-multicore-afterlecture.ppt">ppt</a> <a href="/~ece742/f12/lib/exe/fetch.php?media=onur-18-742-fall12-lecture6-asymmetric-multicore-afterlecture.pdf" class="media mediafile mf_pdf" title="onur-18-742-fall12-lecture6-asymmetric-multicore-afterlecture.pdf">pdf</a> <a href="http://youtu.be/hzUQc7NvAnc?list=PLSEZzvupP7hNjq3Tuv2hiE5VvR-WRYoW4" class="urlextern" title="http://youtu.be/hzUQc7NvAnc?list=PLSEZzvupP7hNjq3Tuv2hiE5VvR-WRYoW4" rel="nofollow">YouTube Video</a> </td> 

В этом случае я хочу find-

«/~ece742/f12/lib/exe/fetch.php?media=onur-18 -742-fall12-lecture6-асимметричный-multicore-afterlecture.pdf "

Я ничего не пропустил?

+0

Можете ли вы показать пример содержимого этого файла? – Barmar

+0

Кстати, вам не нужно скрывать '/' с помощью 'grep', и вам не нужно скрывать квадратные скобки'? ',' = 'И' .'. – Barmar

+0

И вам не нужно скрывать '=' в именах файлов. Обычно проще просто указывать имена файлов в кавычках, а не избегать каждого специального символа. – Barmar

ответ

1

grep не распознает управляющие последовательности \w и \d. Эквивалент в расширенной Regexp является [:alnum:]_

grep -Eo '/~ece742[[:alnum:]_/.?=\-]+\.pdf' doku.php\?id\=lectures 

Если вы хотите использовать PCRE экранирующие последовательности, используйте -P вместо -E.

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