python 匹配中文的正则表达式介绍

正在编写的一个小程序MiniBlogs Updater中,需要计算用户所输入的文字字数。因为中英文字符编码长度不一,如果直接使用python中的len()函数,它计算的是该字串的实际长度,一个中文字并非等同于一个英文字母的。因此,需要把中文字当成英文字母来处理。

我写了这样一条语句来处理:

 代码如下 复制代码

 length=len(re.sub('[x80-xff]{3}','a',msg))

它的意思是,把所有的中文都替换成英文字母a,然后再统计字数。(只是统计而已,不修改源字串。)这条语句在windows下utf8文件中能够正常工作。

常见中文正则表达式匹配结果比较

模式[u4e00-u9fff]匹配结果为:2 mi ^ ^
模式[^u4e00-u9fff]匹配结果为:我亲爱的 只Mao ,你知道吗?我在想你们 -
模式[u4e00-u9fa5]匹配结果为:2 mi ^ ^
模式[^u4e00-u9fa5]匹配结果为:我亲爱的 只Mao ,你知道吗?我在想你们 –
模式[u4e00-u9fa5uf900-ufa2d]匹配结果为:2 mi ^ ^
模式[^u4e00-u9fa5uf900-ufa2d]匹配结果为:我亲爱的 只Mao ,你知道吗?我在想你们 -

模式[chr(0xa1)-chr(0xff)]匹配结果为:2 mi, ^-^
模式[^chr(0xa1)-chr(0xff)]匹配结果为:我亲爱的 只Mao 你知道吗?我在想你们
模式[x80-xff]匹配结果为:我亲爱的 只Mao 你知道吗?我在想你们
模式[^x80-xff]匹配结果为:2 mi, ^-^

模式[x00-xff]匹配结果为:我亲爱的2只Maomi,你知道吗?我在想你们^-^
模式[^x00-xff]匹配结果为:

模式[x80-xff][x80-xff]匹配结果为:我亲爱的 只Mao 你知道吗?我在想你们
模式[^x80-xff][^x80-xff]匹配结果为:mi, ^-^

网上关于GBK、GB2312和BIG5编码范围的资料比较多,但是日文的资料比较少,我总结了一下,希望能对大家在正则中判断
这些字符集尤其是日文字符集的各种字、标点以及特殊符号的时候有所帮助。

 代码如下 复制代码

UTF8
[x01-x7f]|[xc0-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3}

UTF16
[x00-xd7][xe0-xff]|[xd8-xdf][x00-xff]{2}

JIS
[x20-x7e]|[x21-x5f]|[x21-x7e]{2}

SJIS
[x20-x7e]|[xa1-xdf]|([x81-x9f]|[xe0-xef])([x40-x7e]|[x80-xfc])

EUC_JP      
[x20-x7e]|x81[xa1-xdf]|[xa1-xfe][xa1-xfe]|x8f[xa1-xfe]{2}

EUC_JP标点符号及特殊字符 
    
[xa1-xa2][xa0-xfe]

EUC_JP全角数字

xa3[xb0-xb9]

EUC_JP全角大写英文

xa3[xc1-xda]

EUC_JP全角小写英文   
xa3[xe1-xfa]

EUC_JP全角平假名

xa4[xa1-xf3]

EUC_JP全角片假名

xa3[xb0-xb9]|xa3[xc1-xda]|xa5[xa1-xf6][xa3][xb0-xfa]|[xa1][xbc-xbe]|[xa1][xdd]

EUC_JP全角汉字      

[xb0-xcf][xa0-xd3]|[xd0-xf4][xa0-xfe]|[xB0-xF3][xA1-xFE]|[xF4][xA1-xA6]|[xA4][xA1-xF3]|[xA5][xA1-xF6]|[xA1][xBC-xBE]

Big5

[x01-x7f]|[x81-xfe]([x40-x7e]|[xa1-xfe])

GBK

[x01-x7f]|[x81-xfe][x40-xfe]

GB2312汉字

[xb0-xf7][xa0-xfe]

GB2312半角标点符号及特殊符号

xa1[xa2-xfe]

GB2312罗马数组及项目序号

xa2([xa1-xaa]|[xb1-xbf]|[xc0-xdf]|[xe0-xe2]|[xe5-xee]|[xf1-xfc])

GB2312全角标点及全角字母

xa3[xa1-xfe]

GB2312日文平假名

xa4[xa1-xf3]

GB2312日文片假名

xa5[xa1-xf6]

?充:

GB18030
[x00-x7f]|[x81-xfe][x40-xfe]|[x81-xfe][x30-x39][x81-xfe][x30-x39]

日文半角空格

x20

SJIS全角空格 
             
(?:x81x81)

SJIS全角数字  
            
(?:x82[x4f-x58])

SJIS全角大写英文  
    
(?:x82[x60-x79])

SJIS全角小写英文  
    
(?:x82[x81-x9a])

SJIS全角平假名    
  
(?:x82[x9f-xf1])

SJIS全角平假名扩展

(?:x82[x9f-xf1]|x81[x4ax4bx54x55])

SJIS全角片假名    
  
(?:x83[x40-x96])

SJIS全角片假名扩展

(?:x83[x40-x96]|x81[x45x5bx52x53])

EUC_JP全角空格   
   
(?:xa1xa1)

EUC半角片假名
       
(?:x8e[xa6-xdf])

时间: 2024-10-28 07:33:39

python 匹配中文的正则表达式介绍的相关文章

匹配中文字符串正则表达式

   代码如下 复制代码 $str_arr = array( "iameverysorry", "快乐编程,快乐生活", "php教程编程", "1997年香港回归", "英语学习abc", "www.111cn.net" ); $patt_ch = chr(0xa1) . "-" . chr(0xff); foreach ($str_arr as $str) {  

python正则表达式匹配中文详解

如果你需要知道在python中匹配中文汉字的话我们就必须先查看下表 UTF8 [x01-x7f]|[xc0-xdf][x80-xbf]|[xe0-xef][x80-xbf]{2}|[xf0-xff][x80-xbf]{3} UTF16 [x00-xd7][xe0-xff]|[xd8-xdf][x00-xff]{2} JIS [x20-x7e]|[x21-x5f]|[x21-x7e]{2} SJIS [x20-x7e]|[xa1-xdf]|([x81-x9f]|[xe0-xef])([x40-x7

C#匹配中文字符串的4种正则表达式分享

本文介绍在C#中使用匹配中文的正则表达式,包括纯中文.有中文.中文开头.中文结尾等几个正则表达式示例.在正则表达式中,中文可以通过Unicode编码来确定正则表达式范围. 在C#中,匹配中文的正则表达式用Unicode来表示时,范围是: [\u4e00-\u9fa5].所以,在此基础上,我们可以得到如下一些正则表达式. 1.匹配字符串全部是中文字符的正则表达式 代码如下: "^[\u4e00-\u9fa5]+$" 说明:"^"表示字符串开头,"$"

Java使用正则表达式(regex)匹配中文实例代码_java

只能输入中文 /** * 22.验证汉字 * 表达式 ^[\u4e00-\u9fa5]{0,}$ * 描述 只能汉字 * 匹配的例子 清清月儿 */ @Test public void a1() { Scanner sc = new Scanner(System.in); String input = sc.nextLine(); String regex = "^[\\u4e00-\\u9fa5]*$"; Matcher m = Pattern.compile(regex).matc

中文匹配-bash中怎么匹配中文字符

问题描述 bash中怎么匹配中文字符 正则表达式[u4e00-u9fa5]在shell中为什么匹配不出中文,且在grep中报出grep:Invalid range end,我想在shell中匹配输入的中文该怎么做呢 解决方案 Bash 字符匹配正则匹配中文字符中文字符及其中文标点符号正则表达式匹配 解决方案二: 还要看bash是对中文如何编码的,不然没办法直接匹配.

匹配中文汉字的正则表达式介绍_正则表达式

\w匹配的仅仅是中文,数字,字母,对于国人来讲,仅匹配中文时常会用到,见下 复制代码 代码如下: 匹配中文字符的正则表达式: [\u4e00-\u9fa5] 或许你也需要匹配双字节字符,中文也是双字节的字符 复制代码 代码如下: 匹配双字节字符(包括汉字在内):[^\x00-\xff] 注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) PS:关于正则,本站还提供了2款非常简便实用的正则表达式工具供大家参考使用: JavaScript正则表达式在线测试工具: http:/

正确的PHP匹配UTF-8中文的正则表达式

  这篇文章主要介绍了正确的PHP匹配UTF-8中文的正则表达式,本文对比给出了两个不同的正则表达式,需要的朋友可以参考下 我以前一直用这个 代码如下: preg_match('~[x7f-xff]+~is', $string, $tmp); 今天才发现,上面这个也会匹配到一些欧洲国家的字符 应该用下面这个,注意修正符 u 代码如下: preg_match('~[x{4e00}-x{9fa5}]+~u', $string, $tmp);

python正则表达式介绍及使用方法

1.正则表达式介绍 正则表达式(RE)是一种小型的.高度专业化的编程语言,它内嵌在python中,并通过re模块实现.     可以为想要匹配的相应字符串集指定规则     该字符串集可能包含英文语句.email地址.命令或任何你想搞定的东西     可以问诸如"这个字符串匹配该模式吗"     "在这个字符串中是否有部分匹配该模式呢"     你也可以使用RE以各种方式来修改或者分割字符串 正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行 正则表

积累比较常用的正则表达式(例如:匹配中文、匹配html)_正则表达式

正则表达式(Regular Expression,在代码中常简写为regex.regexp或RE)是计算机科学的一个概念.正则表达式使用单个字符串来描述.匹配一系列符合某个句法规则的字符串.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本.许多程序设计语言都支持利用正则表达式进行字符串操作.在很多文本编辑器里,正则表达式通常被用来检索.替换那些符合某个模式的文本. 匹配中文字符的正则表达式: [u4e00-u9fa5]   评注:匹配中文还真是个头疼的事,有了这个表达式就