Улучшение регулярного выражения для хэштега для создания ссылки - PullRequest
1 голос
/ 11 июля 2020

Я использую это регулярное выражение

(^|\s)(#\w+)
To take this -> #test

#test <- to take this

to take this #test another word

to take this #Mest another word

To don't take this -> l'#09

to don't take this -> &#187; or &#39;

Но у меня проблема во время замены.

Я использую это

$1<a href="/hash/$2" class='hash_tag'>$2</a>

Но, таким образом, у меня есть # также в href.

Например

Take this <a href="/hash/#test" class='hash_tag'>test</a>

Хотя мне нужно получить это

Take this <a href="/hash/test" class='hash_tag'>#test</a>

Подсказки?

Нужна ли мне третья группа? Как сделать?

Можно улучшить?

https://regex101.com/r/6C1VDU/1

Ответы [ 2 ]

3 голосов
/ 11 июля 2020

Добавить третью группу просто:

(^|\s)(#(\w+))
|__1_|| |   ||
      | |_3_||
      |____2_|

Заменить на

$1<a href="/hash/$3" class='hash_tag'>$2</a>

См. proof .

1 голос
/ 11 июля 2020

Вам необходимо изменить регулярное выражение и заменить его:

Regex : (^|\s)#(\w+) Замена : $1<a href="/hash/$2" class='hash_tag'>#$2</a>

См. Демонстрацию регулярного выражения .

Итак, # не входит в группу захвата 2, и вы добавляете его только там, где вам нужно в шаблоне замены.

...