gpt4 book ai didi

regex - 中间带有可变字符的负向后视正则表达式 (PERL)

转载 作者:行者123 更新时间:2023-12-01 09:52:21 24 4
gpt4 key购买 nike

我在使用负向后视正则表达式时遇到问题。我已经阅读了 stackoverflow 的结果,但恐怕我不太理解它们。

我经营着一个游戏服务器,我有一个工具可以读取用户的聊天记录,如果用户使用了禁用词就会将其踢出。该工具使用 PERL 正则表达式引擎。

假设我的禁用词是“bag”或“digger”的流行派生词。我可以使用以下正则表达式来匹配包含这些词的聊天行。

(?i)(digg|bag)(?-i)

我的实际列表中还有其他词。

但是,我想先提供一个警告,它在聊天中显示为:

Owner: Don't say "digger"

所以我尝试使用负面回顾来避免匹配我的禁用词列表,当它前面是“所有者:”时 - 但是,我只能在我指定我在“:”之间使用的确切文本时才能让它工作和禁用词 - 我并不总是这样做,而且经常不小心匹配到我自己。

我试过使用:

(?<!Owner\:)/s*(?i)(digg|bag)(?-i)

如果只有空格,这会起作用,但我真正想要的是不匹配:

Owner:digger

Owner: Digger

Owner: don't use bag as an insult

Owner:(anything else here)dig

等等,但匹配:

(anything else):(any banned word regardless of what precedes it after the colon)

由于零宽度断言(我无法理解),或者我的 regex-fu 功能很弱,我无法确定在这种语法中是否可以实现我想要的东西。

我已经尝试了几个教程,并使用了 regex101 解析器,但我不能完全得到我想要的。你能帮忙吗?

最佳答案

看起来你只是想要:

/^(?!Owner:).*(?i:(digg|bag))/s

匹配不以 Owner: 开头且包含(不区分大小写)digg 或 bag 的消息。

关于regex - 中间带有可变字符的负向后视正则表达式 (PERL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35528601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com