Javascript emotes的正则表达式匹配
我在我的网站上实现了emotes,但是这个正则表达式有问题。我90%在那里,但有一个案例我不知道如何解决 这是我的正则表达式:(选项是Javascript emotes的正则表达式匹配,javascript,regex,Javascript,Regex,我在我的网站上实现了emotes,但是这个正则表达式有问题。我90%在那里,但有一个案例我不知道如何解决 这是我的正则表达式:(选项是gm) 在循环中替换Kappa,以检查不同的表情。这是我的测试用例。第二个和第三个未被检测到。每条生产线中的第二个卡帕未被捕获 Kappa Kappa Kappa Kappa Kappa Kappa KappaHD Kappa FrankerZ Kappa Someone Said: Kappa : Kappa Kappa K
gm
)
在循环中替换Kappa
,以检查不同的表情。这是我的测试用例。第二个和第三个未被检测到。每条生产线中的第二个卡帕未被捕获
Kappa
Kappa Kappa
Kappa Kappa Kappa
KappaHD Kappa FrankerZ Kappa
Someone Said: Kappa
: Kappa
Kappa KappaHD Kappa
KappaKappa
如果您不熟悉,请遵循以下规则:
Kappa
(g
设置)的所有实例m
setting)Kappa
通过它后面的空间进行匹配,因此没有找到第二个
下面是一个带有示例代码的Regex101:
我如何让它在Kappa-Kappa
中正确检测Kappa
的两个实例
我考虑在\sKappa\s
上运行第二次查找,但这似乎不是最好的解决方案
(?:^|\s+| )Kappa(?=$|\s+)
试试这个。看演示
您需要的是lookahead
或者当您在第一个Kappa
之后消耗空间时,第二个Kappa
无法匹配,因为后面没有空间
。因此使用0宽度断言
一个更简单的解决方案:
\bKappa\b
单词边界“\b”将匹配所有非单词字符,而不会消耗这些字符。看起来这将非常有效!谢谢,我不太熟悉你lookaheads@DLehlookahead
是一个0宽度断言
。因此它不消耗任何东西,只检查我们这里需要的东西。如果它对您有效,请接受。这似乎影响了我的替换功能,但我将更新我的问题以提供详细信息。我找到了答案。我的替换字符串是$1replacement$2
,它返回的是准确的字符串。我将其更改为删除第一组中的?:
,这使我能够正确捕获$1
,然后我刚刚从替换中删除了$2
。感谢@vks@DLeh它将匹配!@;卡帕@#代码>可以接受吗?可能还有其他一些边缘情况,这可能没有帮助,但我主要是采用“全词”方法,这似乎很好。我试图用原始正则表达式解决的最大问题是Kappa
和KappaHD
应该有不同的替换结果。这也使得我的替换变得更容易,因为我只需要替换为我想要的文本,如果您确信您的输入不会有类似于Kappa的内容,则不需要$1
@DLeh!高清
那就好了:)
\bKappa\b