Java正则表达式:完整匹配中文敏感词

Java正则表达式:完整匹配中文敏感词

Java正则表达式:完整匹配中文敏感词

在进行文本处理时,我们经常会遇到需要过滤敏感词的情况。而中文敏感词的过滤相对英文更加复杂,因为中文字符涉及到Unicode编码范围的问题。本文将介绍如何使用Java正则表达式,实现对中文敏感词的完整匹配过滤。

正则表达式的基本概念

正则表达式是对字符串操作的一种逻辑公式,它通常用来描述字符串的特征。在Java中,可以使用Pattern和Matcher类来支持正则表达式的功能。下面是一些常用的正则表达式元字符:

  • .:匹配任意一个字符
  • *:匹配零个或多个前面的字符
  • +:匹配一个或多个前面的字符
  • ?:匹配零个或一个前面的字符
  • |:匹配两项中的任意一个
  • []:匹配方括号中的任意一个字符
  • {n}:匹配前面字符恰好出现n次
  • {m,n}:匹配前面字符出现m次到n次

完整匹配中文敏感词的正则表达式

在匹配中文敏感词时,我们需要考虑到中文字符的特殊性。一个中文字符通常占用2个字节,对应到Unicode编码中通常在\u4e00\u9fa5之间。因此,我们可以使用[\u4e00-\u9fa5]来匹配一个中文字符。

下面是一个匹配中文敏感词的正则表达式示例:

String sensitiveWord = "我是敏感词";
String text = "这是一段包含敏感词的文本,敏感词是我是敏感词";

String regex = "(?:^|[^\\p{L}])" + sensitiveWord + "(?:$|[^\\p{L}])";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);

if (matcher.find()) {
    System.out.println("文本中含有敏感词");
} else {
    System.out.println("文本中没有敏感词");
}

在上面的示例中,我们首先定义了一个敏感词sensitiveWord和一个包含敏感词的文本text。然后构建了一个正则表达式regex,用于匹配文本中是否包含敏感词。在这个正则表达式中,使用了(?:^|[^\\p{L}])(?:$|[^\\p{L}])来确保匹配的是完整的敏感词,而不是部分匹配。

完整匹配多个中文敏感词的正则表达式

如果我们需要匹配多个中文敏感词,可以将每个敏感词用|连接起来,形成一个或的关系。下面是一个匹配多个中文敏感词的正则表达式示例:

String[] sensitiveWords = {"敏感词1", "敏感词2", "敏感词3"};
String text = "这是一段包含敏感词的文本,敏感词是敏感词1、敏感词2和敏感词3";

String regex = "(?:^|[^\\p{L}])(" + String.join("|", sensitiveWords) + ")(?:$|[^\\p{L}])";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(text);

if (matcher.find()) {
    System.out.println("文本中含有敏感词");
} else {
    System.out.println("文本中没有敏感词");
}

在这个示例中,我们首先定义了一个包含多个敏感词的数组sensitiveWords,然后使用String.join("|", sensitiveWords)将敏感词连接起来,形成一个或的关系。最后构建正则表达式regex来匹配多个中文敏感词。

运行结果

对于上面的两个示例,如果运行时文本中包含敏感词,将会输出文本中含有敏感词;如果文本中不包含敏感词,将会输出文本中没有敏感词

通过使用Java正则表达式,我们可以实现对中文敏感词的完整匹配过滤,确保敏感词不会出现在文本中。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程