2014-11-19 4 views
1

Привет У меня есть следующее регулярное выражение заявление: -Regex * не соответствует отсутствие ввода

<a .* href="http://www.someurl/test.htm">.*?<\/a> 

Это соответствует следующим просто отлично: -

<a class=op_web href="http://www.someurl.co.uk/test.htm">Test</a> 

Однако оно не матч, когда есть ничего не заключаемого между открытием «а» тега и «HREF» заявление, например: -

<a href="http://www.someurl.co.uk/test.htm">Test</a> 

Как изменить это заявление так, что я t может соответствовать чему-либо вообще между открытием 'a' и 'href', включая ничего вообще?

+0

@ ответ VKS является правильным - однако ваше регулярное выражение выглядит немного подозреваемого, например, '.'s в URL будет также соответствие любой символ, а не просто' .' - вам нужно убежать от них. –

+0

@JamesThorpe не только это, ему нужно сопоставить промежуточный '.co.uk' –

+0

@AvinashRaj действительно -'. 'Был всего лишь одним примером того, что не так ... список будет слишком длинным для комментария, и это не ответ на заданный вопрос ... –

ответ

0
<a .* href="http://www.someurl/test.htm">.*?<\/a> 

Это происходит из-за spaces после <a .Make он

<a\b.*href="http:\/\/www\.someurl\.co\.uk\/test\.htm">.*?<\/a> 

Попробуйте

<a\b(?:(?!<\/a>).)*href="http:\/\/www\.someurl\.co\.uk\/test\.htm">(?:(?!<\/a>).)*<\/a> 

Смотрите демо.

http://regex101.com/r/lZ5mN8/66

+0

Почему следующая строка не соответствует? vitae dicta sunt 'explicabo'. – Levrikon

+0

@ user3280634 он соответствует http://regex101.com/r/lZ5mN8/64 – vks

+0

Это не с текстом «vitae dicta sunt» перед этим, я ищу, чтобы использовать его для поиска и замены ссылок в блоке текст, так что будет нормальный текст по обе стороны ссылки. – Levrikon

0

Вы получали вопросы, потому что вы оставили пространство между '.*' вызвавшего движок регулярных выражений ожидать пространство до и после него. Вы можете попробовать следующее регулярное выражение.

<a.*href="(\S+)">.*</a> 


$ grep -Po '<a.*href="(\S+)">.*</a>' file.txt 
<a class=op_web href="http://www.someurl.co.uk/test.htm">Test</a> 
<a href="http://www.someurl.co.uk/test.htm">Test</a> 
Смежные вопросы