首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一个流传广泛的正则匹配所有中文的错误表示

一个流传广泛的正则匹配所有中文的错误表示

作者头像
明月AI
发布于 2023-02-06 02:35:27
发布于 2023-02-06 02:35:27
1.7K01
代码可运行
举报
文章被收录于专栏:野生AI架构师野生AI架构师
运行总次数:1
代码可运行

在网上搜索正则表达式匹配中文的时候,通常会得到这样一个正则表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\u4e00-\u9fa5
# 常用的标点符号则直接列举出来
\u3002\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3010\u3011\u007e

自己在代码里也一直是这么写的。

下午还在会议室开会的时候,群里就有同事反馈,下面这个字符串有问题:

小鹏 and (小灵狗 or 神州租车) and (三方战略 or 宁波 or P7 or 租赁 or 广州 or 杭州 or 王桐 or 蒋志春 or 残值管理 or 曾䶮冬 or 强强联合 or 战略合作 or 共赢)

一开始以为是可能该字符串包含了一些特殊的或者不可见的特殊字符,导致超出了自己正则表达式的范围,最有可能的是某些不可见字符(括号可能不是英文的,不过自己的正则里已经对中文括号做了适配),安排同事去排查。

晚上还没见反馈结果,就自己动起手来了。我把所有空格和括号删掉重新输入,问题依旧。于是用正则“\u4e00-\u9fa5”去匹配问题字符串中的中文时,发现“”这个字没有命中。

这个生僻字确实没见过,搜索了一下:

䶮是一个汉字,读作yǎn,是指飞龙在天,或者是有我无敌,唯吾独尊的意思。

(古代皇帝头脑发热给自己名字造字,却把我们带坑里了) 不过认识多一个汉字对我们解决这个问题并没有太多好处,于是搜索匹配所有汉字的正则写法,找到这个文章:https://juejin.cn/post/6844904116842430471

按照这个文章,匹配所有汉字的正则应该是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\u4e00-\u9fff

本以为这应该是可以解决了,测试结果还是不通过。也就是说,“”这个字不在该范围中。于是查了这个字的unicode编码“4DAE”,还真就不在上述的范围!

于是搜索所有中文的unicdoe编码,这是一个正确的方向:

2E80~33FF:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。

3400~4DFF:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。

4E00~9FFF:中日韩认同表意文字区,总计收容20,902个中日韩汉字。

A000~A4FF:彝族文字区,收容中国南方彝族文字和字根。

AC00~D7FF:韩文拼音组合字区,收容以韩文音符拼成的文字。

F900~FAFF:中日韩兼容表意文字区,总计收容302个中日韩汉字。

FB00~FFFD:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。

(来自文章:https://blog.csdn.net/iteye_2386/article/details/81929295 ,https://www.jianshu.com/p/e39247e669ad )

于是要匹配所有中文(简体、繁体、生僻字等),直接使用下面的表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
\u2e80-\u9fff

不过需要说明的是,这并不是一个严格的匹配所有中文的正则表达式(会把一些日韩的字符也匹配到),不过对于我们的场景却是合适的。


真是好久没写文章了,罪过罪过。。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-01-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 野生AI架构师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端生僻字显示
异名在一个游戏项目中遇到一个比较有意思的问题,在游戏的玩法设定中,当怪物在消失的时候会爆出一个中文字,这个效果在部分机型上会出现乱码符号
异名
2020/08/10
3.1K0
前端生僻字显示
VBA:正则表达式(5) -提取中文内容
CJK(CJK Unified Ideographs,中日韩统一表意文字)字符集中了从0x4E00到0x9FA5的连续区域,包含了 20902 个来自于中国、韩国、日本的汉字,涵盖了多数中文字符,可以说CJK是GB2312-80和BIG5等字符集的超集。
Exploring
2023/09/25
1.5K0
VBA:正则表达式(5) -提取中文内容
python字符串编码及乱码解决方案
http://blog.csdn.net/pipisorry/article/details/44136297
全栈程序员站长
2022/09/06
2.3K0
python字符串编码及乱码解决方案
JavaScript·正则匹配汉字
在此之前,项目中使用正则匹配汉字的表达式都是 /[\u4e00-\u9fa5]/,虽然常用,但是一直未深究其所以然。
数媒派
2022/12/01
4.5K0
正则表达式 - 匹配 Unicode 和其他字符
      有时我们需要匹配 ASCII 范围之外的字符。现在已经有了可以表示超过10万个字符的Unicode 标准(http://www.unicode.org)。然而,Unicode 也没有完全舍
用户1148526
2023/05/11
3.3K0
正则表达式 - 匹配 Unicode 和其他字符
python判断字符串是中文还是英文
1、中日韩扩展部首[2E80-2EFF](116字) 2、康熙字典部首[2F00-2FDF](214字) 3、表意文字描述字符[2FF0-2FFF](12字) 4、中日韩笔画[31C0-31EF](37字) 5、中日韩统一表意文字扩展A区[3400-4DBF](6582字) 6、中日韩统一表意文字[4E00-9FFF](20940字) 7、私用区[E000-F8FF](896字) 8、中日韩兼容表意文字[F900-FAFF](471字) 9、中日韩统一表意文字扩展B区[20000-2A6DF](42711字) 10、中日韩统一表意文字扩展C区[2A700-2B73F](4149字) 11、中日韩统一表意文字扩展D区[2B740-2B81F](222字) 12、中日韩统一表意文字增补集[2F800-2FA1F](542字) 13、增补私用A区[F0000-FFFFF](73字)
周小董
2019/09/06
22.6K0
刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK
英文字母再加一些其他标点字符之类的也不会超过256个,用一个字节来表示一个字符就足够了(2^8 = 256)。但其他一些文字不止这么多字符,比如中文中的汉字就多达10多万个,一个字节只能表示256个字符,肯定是不够的,因此只能使用多个字节来表示一个字符。
笨笨阿林
2022/05/09
4.7K0
刨根究底字符编码之五——简体汉字编码方案(GB2312、GBK、GB18030、GB13000)以及全角、半角、CJK
问题:在项目中搜索所有中文
因项目需要,需要将项目中所有的中文改为英文版本。故需要搜索项目中所有中文。用到的IDE为vscode和IntelliJ IDEA。
luoheng
2022/10/27
1.3K0
【Python爬虫实战】正则:中文匹配与贪婪非贪婪模式详解
正则表达式是一种强大的工具,可以帮助我们在文本处理中灵活高效地匹配、查找、替换各种字符和字符串模式。对于中文字符的处理,正则表达式尤其有用,因为它可以通过 Unicode 范围直接匹配常用的汉字及标点符号。此外,正则表达式中的贪婪和非贪婪模式提供了不同的匹配策略,使我们能够更灵活地控制匹配的长度和范围。这篇文章将通过一些示例介绍如何使用正则表达式匹配中文字符,以及如何利用贪婪和非贪婪模式进行不同方式的匹配。
易辰君
2024/11/07
5490
常用的re模块的正则匹配的表达式
07.01自我总结 常用的re模块的正则匹配的表达式 一、校验数字的表达式 1.数字 ^[0-9]\*$ 2.n位的数字 ^\d{n}$ 3.至少n位的数字 ^\d{n,}$ 4.m-n位的数字 ^\
小小咸鱼YwY
2019/07/24
1.4K0
【InventWithPython 第一部分】校对活动正式启动
仓库:https://github.com/apachecn/invent-with-python-zh
ApacheCN_飞龙
2022/09/23
4460
刨根究底字符编码之零——前言
字符编码是计算机世界里最基础、最重要的一个主题之一。不过,在计算机教材中却往往浮光掠影般地草草带过,甚至连一本专门进行深入介绍的著作都找不到(对这一点我一直很困惑,为什么就没有哪位大牛对这个如此基础、重要而又如此容易让人困惑的主题写一本专著予以介绍呢)。
笨笨阿林
2019/01/18
5790
一些常用实用的正则表达式
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^\x00-\xff] 评注:可以用来计算字符
听着music睡
2018/05/18
7300
从 JS 里的 MD5 转换踩坑开始说起
写 JS 代码的同学们不知道有没有注意过,后台接口通过 JSON 处理汉字字符、emoji 时,返回的是像 \u00ff 这样转义处理的字符,而不是它们的明文原文。这是为什么呢?
贤羽
2022/06/09
2.8K2
Java 正则表达式的用法和实例
6、\S符号:非空字符 7、\s符号:空字符,只可以匹配一个空格、制表符、回车符、换页符,不可以匹配自己输入的多个空格。 8、\r符号:空格符,与\n、\tab相同
全栈程序员站长
2022/08/30
1.3K0
Java 正则表达式的用法和实例
正则表达式高级
正则表达式高级 ——《精通正则表达式》 +Java/Go/Python官方文档 +多年经验 +实验结果 知识整理
林万程
2019/08/05
1.2K0
Javascript正则构造函数与正则表达字面量&&常用正则表达式
  本文不讨论正则表达式入门,即如何使用正则匹配。讨论的是两种创建正则表达式的优劣和一些细节,最后给出一些常用正则匹配表达式。   Javascript中的正则表达式也是对象,我们可以使用两种方法创建正则表达式: 使用new RegExp()构造函数 使用正则表达字面量   先说结果,使用正则表达字面量的效率更高。   下面的示例代码演示了两种可用于创建正则表达式以匹配反斜杠的方法: 1 //正则表达字面量 2 var re = /\\/gm; 3 4 //正则构造函数 5 var reg =
Sb_Coco
2018/05/28
1.2K0
Java_util_02_Java判断字符串是中文还是英文
做微信开发,使用百度翻译API时,需要指定译文的语种。这就需要我们判断待翻译内容是中文还是英文,若是中文,则翻译成英文,若是英文则翻译成中文。
shirayner
2018/08/10
1.6K0
常用正则表达式
/^([0-9]{1,}\.[0-9]{1,}|[0-9]{1,})$/    数字或小数点
Java架构师必看
2020/04/22
6880
【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
商品评价列表页,显示每条用户的评价详情,为了保护用户隐私,要求显示用户昵称时只能显示第一位和最后一位,其他的用※代替。
一枝花算不算浪漫
2020/10/09
9130
【原创】经验分享:一个小小emoji尽然牵扯出来这么多东西?
相关推荐
前端生僻字显示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档