正则表达式匹配整个单词不工作

本文关键字:单词不 工作 正则表达式 | 更新日期: 2023-09-27 18:03:14

为新手问题道歉。

我有一个小日志,我让用户评论我发布的东西,并将某些字符转换为笑脸。

so :)变为图像<img src=''smiley'smile.png' />:d变为<img src=''smiley'big-smile.png' />,依此类推

现在,最近,我的一个朋友发布了一个教育链接,在url中有一个:d,我的smiley regex跳到链接并将其分解成碎片,带有一个大大的微笑图像。

你明白了。

因此,我将正则表达式从:d更改为'b:d'b,并期望它匹配整个单词,如果:d是单独的。你猜怎么着?

下面是我所讲内容的示例演示

我如何让正则表达式只匹配:d本身?谢谢。

正则表达式匹配整个单词不工作

这是因为'b匹配单词边界。当您将它放在:d后面时,它可以工作,因为d被认为是一个单词。:不被认为是单词字符,因此不是单词边界。用留白或锚来修复它:

(?<=^|'s):d'b

编辑:正如Bob Vale指出的,这也适用于如果你匹配像:/这样的笑脸,/不会触发字边界。你必须做同样的事情,但是要向前看:

(?<=^|'s):d(?=$|'s)

您将需要对字符串的开始/结束和空白使用向后查找和向前查找匹配,因为您试图匹配的字符不一定会触发通常的单词边界规则。

使用(?<=^|'s):d(?=$|'s)此模式应该适用于所有匹配例如(?<=^|'s):')(?=$|'s)