当前位置:网站首页>如何正则匹配乱码?
如何正则匹配乱码?
2022-08-09 22:11:00 【ailx10】
曾经护网的时候,遇到过要写一个正则,匹配文本中包含乱码,当时精神状态比较紧张,没有写出来,事后感觉非常尴尬,不过现在已经释然了,趁着周末休息的时候,简单研究了一下,以防未来还会遇到同样的问题,测试样例如下,包含:中文、英文、韩文、日文、中文标点符号、英文标点符号,以及乱码。
(中文)(¥)(abc+-*/)(한국인)(小さな日本)(��)(中文)(¥)(+-*/)(한국인)(小さな日本)正则表达式[ -~]+,可以匹配所有的可打印的ASCII码字符,但是不能匹配中文、中文标点符号以及乱码。
正则表达式[^ -~]+,可以匹配所有中文、中文标点符号以及乱码,也能匹配日文、韩文。
正则表达式[\u4e00-\u9fa5]+,可以匹配所有的中文。
正则表达式[\u3002\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+,可以匹配所有的中文标点符号。
正则表达式[\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF]+ ,可以匹配所有的中日韩文,但是不包含标点符号。
所以,初略的构建一个匹配乱码的正则表达式如下:
[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+
测试如下,效果良好:

如果想要匹配乱码之后的所有文本,可以使用如下正则表达式:
[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]+.*
如果想要匹配包含乱码的整个文本,可以使用如下正则表达式:
[ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]*[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]+.*
如果文本中不存在乱码,则测试不通过

网络安全任重道远,洗洗睡吧~

边栏推荐
- 2021年国内外五大BI厂商——优秀的商业智能工具推荐
- k8s部署mysql
- JS中表单操作、addEventListener事件监听器
- Redis集群
- R语言将列表数据转化为向量数据(使用unlist函数将列表数据转化为向量数据)
- What kind of mentality do you need to have when using the stock quantitative trading interface
- 打包报错 AAPT: error: failed to read PNG signature: file does not start with PNG signature.
- 五分钟商学院(基础---商业篇)
- 数字与中文大写数字互转(5千万亿亿亿亿以上的数字也支持转换)
- 如何坚持使用程序化系统?
猜你喜欢

【Burning】It's time to show your true strength!Understand the technical highlights of the 2022 Huawei Developer Competition in one article

leetcode:325. 和等于k的最长子数组长度

安踏携手华为运动健康共同验证冠军跑鞋 创新引领中国体育

Install win7 virtual machine in Vmware and related simple knowledge

Chapter 15 HMM模型

毕昇编译器优化:Lazy Code Motion

Interfering with BGP routing---community attributes

HBuilder X 不能运行到内置终端

Qt message mechanism and events

干涉BGP的选路---社团属性
随机推荐
What is the stability of the quantitative trading interface system?
Forbidden (CSRF token missing or incorrect.): /
Controller层代码这么写,简洁又优雅!
leetcode:321. 拼接最大数
浅析量股票化交易的发展现状
CV review: softmax code implementation
Redis
leetcode:331. 验证二叉树的前序序列化
Mysql集群 ShardingSphere
三:OpenCV图片颜色通道数据转换
Redis集群
信息系统项目管理师---第十一章项目风险管理历年考题
集群的基础形式
ElasticSearcch集群
xlrd 与 xlsxwritter 的基本操作
R语言ggplot2可视化:使用ggplot2可视化散点图、使用labs参数自定义Y轴的轴标签文本(customize Y axis labels)
Qt message mechanism and events
A. Common Prefixes
“我“是一名测试/开发程序员,小孙的内心独白......
Leetcode 235. 二叉搜索树的最近公共祖先