You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

寻求俄语脏话过滤正则:匹配单词首尾以外的西里尔字符

俄语脏话过滤:匹配单词首尾外西里尔字符的正则方案

问题根源

\B\w\B无效的核心原因是默认规则下\w仅匹配ASCII字母、数字和下划线,不包含西里尔字符。要处理俄语字符,必须明确指定西里尔字符类,结合零宽断言定位首尾之外的目标字符。

解决方案正则

使用带零宽断言的正则,精准匹配位于两个西里尔字符之间的单个字符:

(?<=[ёа-яЁА-я])[ёа-яЁА-я](?=[ёа-яЁА-я])

代码示例(Java)

String dirtyWord = "ОченьПлохоеСлово";
String censored = dirtyWord.replaceAll("(?<=[ёа-яЁА-я])[ёа-яЁА-я](?=[ёа-яЁА-я])", "*");
System.out.println(censored); // 输出: О**************о

正则逻辑拆解

  • (?<=[ёа-яЁА-я]):正向反向断言,确保当前字符的前一个字符是西里尔字母(覆盖大小写和ё)
  • [ёа-яЁА-я]:匹配需要替换的单个西里尔字符
  • (?=[ёа-яЁА-я]):正向先行断言,确保当前字符的后一个字符是西里尔字母

这种写法会自动跳过单词的首尾字符(首字符无前驱、尾字符无后继,不满足断言条件),完全适配你的需求。

内容的提问来源于stack exchange,提问作者Ivan Dvurechenskiy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:22:52