加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

具有可变字符的负面后瞻性正则表达式(PERL)

发布时间:2020-12-14 05:37:41 所属栏目:百科 来源:网络整理
导读:我有一个负面的lookbehind正则表达式的问题.我已经阅读了stackoverflow结果,我担心我不太了解它们. 我操作一个游戏服务器,我有一个工具,可以读取用户的聊天,并在用户使用禁止的单词时踢他们.该工具使用PERL正则表达式引擎. 说我的被禁词是“包”或“挖掘者”
我有一个负面的lookbehind正则表达式的问题.我已经阅读了stackoverflow结果,我担心我不太了解它们.

我操作一个游戏服务器,我有一个工具,可以读取用户的聊天,并在用户使用禁止的单词时踢他们.该工具使用PERL正则表达式引擎.

说我的被禁词是“包”或“挖掘者”的流行衍生词.我可以使用以下正则表达式来匹配包含这些单词的聊天行.

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

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

但是,我想首先提出警告,在聊天中显示为:

Owner: Don’t say “digger”

所以我尝试使用负面的lookbehind来避免匹配我的禁止词列表,当它前面是“所有者:” – 但是,如果我指定我在“:”和被禁止之间使用的确切文本,我只能让它工作这个词 – 我并不总是这样做,而且经常意外地与我的自我相匹配.

我试过用:

(?<!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)

如果我想要的东西在这种语法中是可能的,我无法解决,因为零宽度断言(我无法解决这个问题),或者我的正则表达式只是弱点.

我已经尝试了几个教程,并使用了regex101解析器,但我无法得到我想要的东西.你能帮忙吗?

解决方法

好像你只是想要:

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读