欢迎光临散文网 会员登陆 & 注册

【D1n910】正则表达式入门(五)

2019-06-16 02:08 作者:爱交作业的D1N910  | 我要投稿

正常操作,正常分析,大家好,我是D1n910。

这是一篇连续的教程,如果是你不小心点进来的,请你先看一遍之前的内容哦~

十二、零宽断言

场景一:我不喜欢某个坏蛋,如果弹幕中出现这个坏蛋,且前面是“我爱”,我就要把这个弹幕屏蔽。“我爱坏蛋”这个该怎么屏蔽呢?包括“我爱坏蛋1”、“我爱坏蛋2”......

“坏蛋”这个是固定的词,这个词固定的地方在于,它的【位置】在“我爱”后面。

那么只要是匹配了“坏蛋”这个词,它只要是在“我爱”的后面,那么就要被匹配到。

通过使用零宽断言的"(?=exp)"就可以实现(注:exp 的意思是例子,exp这个可以替代任何字符串)

比如我们刚刚的需求,可以这么实现——“/我爱(?=坏蛋)/”,这个的意思是匹配“我爱”字符,然后看它后面是不是接着坏蛋两个字,如果是,则屏蔽

只要是 坏蛋前面接我爱,都会被屏蔽!

那配合我们之前学的中括号的用法,我们还可以这么玩

先匹配“坏蛋1”或者“坏蛋2”或者“坏蛋3”这个字符串的位置,然后看看前面是不是接着“我爱”

场景二:类似场景一,我喜欢“我爱”,但是我不喜欢某个坏蛋,只要“我爱”这个字符后面接的是这个坏蛋的弹幕,我都要匹配屏蔽掉。这么做?

通过使用零宽断言的"(?<=exp)"就可以实现,指的是匹配exp这个字符串后的位置(注意:这边的“<”开口朝后,可以方便记忆。

那我们刚刚的需求可以这么写


只要是 我爱 后面接 坏蛋,都会被屏蔽!

十三、负向零宽断言

场景三:还是“我爱”,我是某明星的唯粉,除了这个我爱明星以外的弹幕,所有其他的“我爱”后面接着的内容不是这个明星的我都屏蔽掉。

通过使用零宽断言的"(?!exp)"就可以实现,指的是匹配不是在exp之前(注意:这和之前匹配是在exp之前的"(?=exp)"区别在于“=”换成了“!”在程序中,感叹号一般代表的是“否定”的意思。

刚刚我的需求,就可以这么实现——“/我爱(?!明星)/”——这个的意思是匹配“我爱”字符,然后看它后面是不是【不是】接着明星两个字,如果不是,则屏蔽

场景四:还是明星,我需要看到的弹幕是“又大又漂亮的明星”,只要是有这个明星的,前面的内容如果不是“又大又漂亮的”弹幕,我都不要看。怎么做呢?

通过使用零宽断言的"(?<!exp)"就可以实现,指的是匹配一些字符串,前面不出现exp

刚刚我们的需求就可以这么写:

十四、注释

实测在JavaScript中,正则表达式不能够用这样的方法写注释,也不能查询到对应的方法。

不过,一般正则表达式的实际运用中,都不建议写注释~(你想写的话,可以用你的对应语言的注释来写~)

正则表达式学习进度(14/18)

总算还有四个!

快毕业了!

嗷嗷嗷~

【D1n910】正则表达式入门(五)的评论 (共 条)

分享到微博请遵守国家法律