改进主题标签的正则表达式以生成 link

Improving a regex for the hashtag to generate a link

我正在使用这个正则表达式

(^|\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;

但是我在替换过程中遇到了问题。

我用这个

<a href="/hash/" class='hash_tag'></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

您需要修改正则表达式和替换:

正则表达式: (^|\s)#(\w+)
替换<a href="/hash/" class='hash_tag'>#</a>

参见regex demo

因此,# 被排除在捕获组 #2 之外,您只需在替换模式中需要的地方添加它。

添加第三组很容易:

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

替换为

<a href="/hash/" class='hash_tag'></a>

参见proof