我正在我的网站上实施Twitch.tv表情,但我在使用这个正则表达式时遇到了麻烦。我90%在那里,但有一个案例,我不知道如何解决。
这是我的正则表达式:(选项为gm
)
(^|\s+| )Kappa($|\s+)
在循环中替换Kappa
以检查不同的表情。这是我的测试用例。第二个和第三个未被检测到。每行中的第二个Kappa没有被捕获。
Kappa
Kappa Kappa
Kappa Kappa Kappa
KappaHD Kappa FrankerZ Kappa
Someone Said: Kappa
: Kappa
Kappa KappaHD Kappa
KappaKappa
如果您不熟悉,这些是我希望遵循的规则:
Kappa
(g
设置)m
设置)问题似乎是第一个Kappa
通过后面的空格匹配,所以找不到第二个。
这是一个Regex101,其示例代码为:https://regex101.com/r/fY0fN4/3
如何让它正确检测Kappa
中Kappa Kappa
的两个实例?
我考虑在\sKappa\s
上运行第二次查找,但这似乎不是最佳解决方案。
答案 0 :(得分:1)
(?:^|\s+| )Kappa(?=$|\s+)
试试这个。看看演示。
https://regex101.com/r/zB3hI5/14
您需要的是lookahead
,或者当您在space
之后使用Kappa
时,第二个Kappa
无法与theres no space behind it
匹配。所以请使用0 width assertion
。
答案 1 :(得分:1)