zoukankan      html  css  js  c++  java
  • 正则文本过滤时的一些注意事项

    目的是要过滤掉特殊符号,只保留常规的中文、英文、数字,例如各种表情符号是要过滤掉的

    中文范围:u4e00-u9fa5
    英文范围:a-zA-Z
    数字范围:0-9

    在正则中,用w可以代码普通的字符,用d可以代替数字,但在实践中发现,如果在过滤中使用wd来代替的话,有一些特殊字符中会被保留的,也就是没有如期被过滤掉。
    当然也可能是我的用法不对,有人知道的话请指正。

    如下一个特殊字符:

    其ASCII码是u0e51,经测试,如果用w来过滤,它是不会被过滤掉的,意思是它属于w的范围,代码如下(Python语法):

    ss = '(๑•̀㉨•́ฅ✧ 早U小我ki↖义ir.u9↖↖〉ik梯△建迷Ⅰ‘(‘汁li义嫩∵迷☆迷茫期末考试o人又寸义√近近oiii`相义消心o义↖失过了↖义'
    re.sub('[^wdu4e00-u9fa5]', '', ss)
    

    输出:

    ๑ฅ早U小米ki义iru9ik梯建迷Ⅰ汁li义嫩迷迷茫期末考试o人又寸义近近oiii相义消心o义失过了义
    

    正则里面用的是wd,注意替换后开头的两个特殊符号还在。

    下面把w改为 a-zA-Z

    ss = '(๑•̀㉨•́ฅ✧ 早U小我ki↖义ir.u9↖↖〉ik梯△建迷Ⅰ‘(‘汁li义嫩∵迷☆迷茫期末考试o人又寸义√近近oiii`相义消心o义↖失过了↖义'
    re.sub('[^a-zA-Zdu4e00-u9fa5]', '', ss)
    

    输出:

    ๑早U小米ki义iru9ik梯建迷汁li义嫩迷迷茫期末考试o人又寸义近近oiii相义消心o义失过了义
    

    前一次输出中的第2个特殊字符没有了。再把d替换为0-9:

    ss = '(๑•̀㉨•́ฅ✧ 早U小我ki↖义ir.u9↖↖〉ik梯△建迷Ⅰ‘(‘汁li义嫩∵迷☆迷茫期末考试o人又寸义√近近oiii`相义消心o义↖失过了↖义'
    re.sub('[^a-zA-Z0-9u4e00-u9fa5]', '', ss)
    

    输出:

    早U小米ki义iru9ik梯建迷汁li义嫩迷迷茫期末考试o人又寸义近近oiii相义消心o义失过了义
    

    开头的特殊字符都没有了

  • 相关阅读:
    go开发 modules 的使用和代理
    利用 nodejs 解析 m3u8 格式文件,并下 ts 合并为 mp4
    别再@官方啦,普天同庆加国旗
    vue基于 element ui 的按钮点击节流
    react-router 5.0 的鉴权
    slot 组件的内部传值 v-slot 的使用
    javascript 写一个ajax 自动拦截,并下载数据
    Linux 命令大全
    http 基础
    MongoDB Shell (mongo)
  • 原文地址:https://www.cnblogs.com/wuzhiblog/p/python_filter_special_character.html
Copyright © 2011-2022 走看看