如何高效屏蔽B站令人心烦的弹幕?——正则表达式实践

引子

五一假期这几天干啥呢?自己又是条Single Doge,哥们朋友都忙,心思也没能放在学习上,时间很自然的导向了B站。可打开B站,心情一定会好吗?当然不会,看着满屏的智障弹幕,心中一万匹CNM在策马奔腾。不多说了,直接看图。

2019-05-03.png
全B站我觉得最可惜的一个视频,之前神仙级别的高级弹幕让这些刷日期的SB刷没了,痛心。NM$L!⬆⬆⬆
2019-05-03 (2).png
FFF团员极度亢奋中⬆⬆⬆
2019-05-03 (1).png
HOP原来不是很多空耳君吗?让这些ZZ弹幕挤没了?⬆⬆⬆

解决方案

这么多脑残弹幕怎么屏蔽呢?一个个加入屏蔽词?当然可以,不过那样的话你要加入上前乃至上万个屏蔽词,效率极低,播放器肯定也会出现明显的卡顿。B站为我们提供了另外一个选项——正则表达式屏蔽。

啥是正则表达式?

正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE),又称正规表示式正规表示法正规表达式规则表达式常规表示法,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些匹配某个模式的文本。【引用自维基百科】

也就是说,正则表达式是一种能够快熟筛选字符串的一种方法,在很多编程语言中应用广泛。像B站,正则表达式就是在前端JavaScript中运行并起作用的(这种东西肯定不会放到后端做,尽管Go语言能实现,手动狗头)。

怎么编写正则表达式?

网络上有详尽的教程,我在此引述一些我使用到的:

正则表达式 – 教程 | 菜鸟教程

弹幕正则屏蔽的正确使用姿势 - 哔哩哔哩

GitHub上还有与此相关的开源项目,开箱即用:

jnxyp/Bilibili-Block-List: 基于正则表达式的Bilibili弹幕屏蔽规则

如何使用正则进行屏蔽?

很容易可以在B站PC端找到屏蔽设定模块,如图:

2019-05-03 (4).jpg
你可以将自己写的正则写在输入框内,注意前面后面都要加上斜杠/,点击右边添加即可。别忘记同步哈~

你也可以在编辑区右键点击,导出XML文件,这相当于一个备份文件,你可以把它分享给别人,让别人也可以方便的使用你的规则。

相同的,你也可以导入他人的规则。下面我分享一下我的规则。

分享我的弹幕屏蔽XML

这是我自己定制的正则屏蔽规则,目前可能有一些问题,比如不全面,容易误杀,今后我也会尽量加以维护,毕竟我也是开始学QAQ
<!-- B站弹幕屏蔽规则 By Xiaomage 2019.5.3 -->
<!-- 使用教程详见https://xmgspace.me -->
<!-- 制作时参考了其他的同类作品,不便收集,在此感谢原作者~阿里嘎多 -->

<filters>
<!-- 给卢老爷上香 -->
<item enabled="true">t=一卷</item>
<item enabled="false">r=上香(吐痰)?</item>
<!-- 给卢老爷上香 -->

<!-- 屏蔽脑残MC玩家 -->
<item enabled="true">t=mc好评</item>
<item enabled="true">t=MC了解一下</item>
<item enabled="true">t=我的世界了解一下</item>
<item enabled="true">t=mc</item>
<item enabled="true">t=Mc</item>
<item enabled="true">t=MC</item>
<item enabled="true">t=我的世界</item>
<!-- 屏蔽脑残MC玩家 -->

<!-- 屏蔽抽奖弹幕 -->
<item enabled="true">t=抽奖</item>
<item enabled="true">t=中奖</item>
<item enabled="true">t=抽</item>
<item enabled="true">t=奖</item>
<item enabled="true">t=中</item>
<item enabled="true">t=万一</item>
<item enabled="true">t=一万呢</item>
<!-- 屏蔽抽奖弹幕 -->

<!-- 屏蔽无意义刷屏弹幕 -->

<item enabled="true">t=⎛⎝≥⏝⏝≤⎠⎞</item>
<item enabled="true">t=顶端</item>
<item enabled="true">t=联发</item>
<item enabled="true">t=漂移</item>
<item enabled="true">r=(■|▂|▃|▄|▅|▆|█)*</item>
<item enabled="true">r=[什么怎啥].{0,5}会员|会员.{0,5}[什么怎啥啊]|会员.{0,8}世界</item>
<item enabled="true">r=会员色</item>
<!-- 屏蔽无意义刷屏弹幕 -->

<!-- 屏蔽暴露隐私弹幕 -->
<item enabled="true">r=[\u4e00-\u9fa5]*别撸了</item>
<item enabled="true">r=我知道你在[\u4e00-\u9fa5]*</item>
<item enabled="true">r=(好|hao|号)?(这|着)?(一)?口</item>
<item enabled="true">r=(助|保佑|保|助|给|佑|祝)(我)?</item>
<!-- 屏蔽暴露隐私弹幕 -->

<!-- 屏蔽Emoji -->
<!-- 我个人非常不喜欢在弹幕中看到Emoji,故屏蔽之 -->
因数据库问题无法正常显示,请下载最下面的XML文件查看
<!-- 屏蔽Emoji -->

<!-- 屏蔽刷日期时间 -->
<item enabled="true">r=[0-9]{2,4}[\-\-\.\-\/\\年][0-9]{1,2}[\-\-\.\-\/\\月][0-9]{1,2}</item>
<item enabled="true">r=20[0-9]{2}[\.\-\/\\年][0-9]{1,2}</item>
<item enabled="true">r=(20|19)[0-9]{2} ?(0?[1-9]|1[012]) ?(0?[1-9]|[12][0-9]|3[01])</item>
<item enabled="true">r=[0-9]{1,2}月[0-9]{1,2}</item>
<item enabled="true">r=(元旦|年|国庆|春|秋|圣诞).?快乐</item>
<!-- 屏蔽刷日期时间 -->

<!-- 刷前排 -->
<item enabled="true">r=^.{0,4}[关踹]上.*大门</item>
<item enabled="true">r=^[看瞧]{1,2}我刷[出到]了什么</item>
<item enabled="true">r=^[第前钱][①②③④⑤⑥⑦⑧⑨01234567890-9〇一二两俩三四五六七八九零壹贰叁肆伍陆柒捌玖⑴⑵⑶⑷⑸⑹⑺⑻⑼㈠㈡㈢㈣㈤㈥㈦㈧㈨]</item>
<item enabled="true">r=^[①②③④⑤⑥⑦⑧⑨01234567890-9〇一二两俩三四五六七八九零壹贰叁肆伍陆柒捌玖⑴⑵⑶⑷⑸⑹⑺⑻⑼㈠㈡㈢㈣㈤㈥㈦㈧㈨]*小时前</item>
<!-- 刷前排 -->
</filters>

你可以点击➡这里⬅下载这个xml文件~

Tags:none
上一篇
下一篇