2015-05-02 5 views
0

Я делаю preg_replace превратить хештегов в ССЫЛОК следующей RegEx:токарных хештегов увязывания но игнорирующие URLs фрагмент Идентификаторы

#([^0-9_\s\W][\p{L}0-9]{2,}) 

Проблема заключается в том, что идентификаторы фрагментов URL также получают включены. Как я могу исключить их, улучшив этот RegEx? Также каждая строка может или многие не быть в пределах <p> тегов.

Я ценю ваш ответ.

+1

пожалуйста, пример строки и ожидаемый ответ – Augwa

+0

Хэш символ будет в матче всего регулярного выражения, но группа захвата будет содержать тег без символа хэша. Поэтому используйте '$ 1', чтобы получить то, что вы хотите. – Barmar

+0

@Class 'preg_replace' выглядит очень похоже на PHP для меня;) –

ответ

0

Это один из работы:

(?<=\W)#(\w+) 

http://www.phpliveregex.com/p/b1u

+0

Да, это так. Большое спасибо :) – user3833490

+0

Этот, однако, не удается, если хэштег находится в самом начале линии, чтобы обратиться к тому, что вы должны использовать (? <=^| \ W) # (\ w +) –

0

Я считаю, что вы хотите, чтобы исключить текст, как это из матчей:

http://stackoverflow.com/questions/29996848#question-header 
              \______________/ 

Простое решение будет требовать символ пробела перед #, который легко сделать с просмотром назад:

(?<=\s|^)#([^\d_\s\W][\p{L}\d]{2,}) 

Demo.

+0

Спасибо, Лукас за редактирование и предложение. RegEx, который вы предложили, не анализирует хэштег в начале строки. – user3833490

+0

Вот пример http://www.phpliveregex.com/p/b1s – user3833490

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

  • Нет связанных вопросов^_^