当前位置:网站首页>如何正则匹配乱码?
如何正则匹配乱码?
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]+.*
如果文本中不存在乱码,则测试不通过
网络安全任重道远,洗洗睡吧~
边栏推荐
猜你喜欢
Bi Sheng Compiler Optimization: Lazy Code Motion
matplotlib散点图颜色分组图例
外包的水有多深?腾讯15k的外包测试岗能去吗?
“我“是一名测试/开发程序员,小孙的内心独白......
Vmware中安装win7虚拟机以及相关简单知识
迁移学习 & 凯明初始化
p5.js实现的炫酷星体旋转动画
信息系统项目管理师---第十一章项目风险管理历年考题
shell array
【Burning】It's time to show your true strength!Understand the technical highlights of the 2022 Huawei Developer Competition in one article
随机推荐
守护进程
JS--hashchange事件--使用/教程
B. Applejack and Storages
【燃】是时候展现真正的实力了!一文看懂2022华为开发者大赛技术亮点
Leetcode 98. 验证二叉搜索树
c:forEach varStatus属性
CV复习:softmax代码实现
干涉BGP的选路---社团属性
R语言ggplot2可视化:使用ggplot2可视化散点图、使用labs参数自定义Y轴的轴标签文本(customize Y axis labels)
leetcode:320.列举单词的全部缩写
33. Fabric通道、组织、节点、权限间关系
一体化伺服电机在三轴钻孔机中的应用
【微信小程序开发(八)】音频背景音乐播放问题汇总
后台管理实现导入导出
R语言patchwork包将多个可视化结果组合起来、使用plot_annotation函数以及tag_level参数将组合图用大写字母进行顺序编码、为组合图的标签添加自定义前缀信息
信息系统项目管理师---第十一章项目风险管理历年考题
daemon
Interfering with BGP routing---community attributes
Janus Official DEMO Introduction
Vmware中安装win7虚拟机以及相关简单知识