您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python 中文正则表达式笔记

5b51 2022/1/14 8:19:35 python 字数 2817 阅读 431 来源 www.jb51.cc/python

从字符串的角度来说,中文不如英文整齐、规范,这是不可避免的现实。本文结合网上资料以及个人经验,以python语言为例,稍作总结。欢迎补充或挑错。一点经验可以使用repr()函数查看字串的原始格式。这对于写正则表达

概述

从字符串的角度来说,中文不如英文整齐、规范,这是不可避免的现实。本文结合网上资料以及个人经验,以 python 语言为例,稍作总结。欢迎补充或挑错。
一点经验
可以使用 repr()函数查看字串的原始格式。这对于写正则表达式有所帮助。
Python 的 re模块有两个相似的函数:re.match(),re.search 。两个函数的匹配过程完全一致,只是起点不同。match只从字串的开始位置进行匹配,如果失败,它就此放弃;而search则会锲而不舍地完全遍历整个字串中所有可能的位置,直到成功地找到一个匹配,或者搜索完字串,以失败告终。如果你了解match的特性(在某些情况下比较快),大可以自由用它;如果不太清楚,search通常是你需要的那个函数
从一堆文本中,找出所有可能的匹配,以列表的形式返回,这种情况用findall()这个函数。例子见后面的代码
utf8下,每个汉字占据3个字符位置,正则式为[\x80-\xff]{3},这个都知道了吧。
unicode下,汉字的格式如\uXXXX,只要找到对应的字符集的范围,就能匹配相应的字串,方便从多语言文本中挑出所需要的某种语言的文本。不过,对于像日文这样的粘着语,既有中文字符,又有平假名片假名,或许结果会有所偏差。
两种字符类可以并列在一起使用,例如,平假名、片假名、中文的放在一起,u"[\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff]+",来自定义所需要匹配的文本。
匹配中文时,正则表达式和目标字串的格式必须相同。这一点至关重要。或者都用认的utf8,此时你不用额外做什么;如果是unicode,就需要在正则式之前加上u""格式。
可以这样定义unicode字符串:string=u"我爱正则表达式"。如果字串不是unicode的,可以使用unicode()函数转换之。如果你知道源字串的编码,可以使用newstr=unicode(oldstring,original_coding_name)的方式转换,例如 linux 下常用unicode(string,"utf8"),windows 下或许会用cp936吧,没测试。
例程序

总结

以上是编程之家为你收集整理的Python 中文正则表达式笔记全部内容,希望文章能够帮你解决Python 中文正则表达式笔记所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶