常用正则表达式——中文匹配、拉丁匹配

最近写脚本发现正则也挺有用的,于是就研究了一下。

总结起来使用正则表达式来匹配中文、韩文、日文、拉丁等范围的字符非常方便。这里也用到了unicode编码表相关知识,下面给出wiki的具体链接,有兴趣的童鞋可以去看看。

Unicode字符平面映射:

http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84

Unicode字符列表:

http://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%88%97%E8%A1%A8

中(包括繁体)日韩字符:[\u2E80-\u9FFF]

拉丁字符:([\u00A0-\u00FF]|[\u0100-\u017F]|[\u0180-\u024F])

这里拉丁我的典型应用时匹配汉字的音标:

下面是测试文档:

然后把范围扩大到^[\u2E80-\u9FFF]+
$, 这样倒是都通过了, 这个应该就是匹
配中日韩文字的正则表达式了, 包括我們
臺灣省還在盲目使用的繁體中文

sdfsdf,sdjsldj,sdj;lasjdfiselfes;lf
sjs;ldkjfie;sldijf  n-bottom: 0‘>dā<
/p><pèsssdsddsàddssdsdchūnchúnchǔng
uī;guǐ;guìhūn;hún;hǔn;hùn

匹配结果截图:

时间: 2024-10-04 12:57:12

常用正则表达式——中文匹配、拉丁匹配的相关文章

常用的正则表达式(例如:匹配中文、匹配html)(转载)

匹配中文字符的正则表达式: [u4e00-u9fa5]    评注:匹配中文还真是个头疼的事,有了这个表达式就好办了  匹配双字节字符(包括汉字在内):[^x00-xff]  评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)  匹配空白行的正则表达式:ns*r  评注:可以用来删除空白行  匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />  评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能

常用正则表达式大全!(例如:匹配中文、匹配html)

匹配中文字符的正则表达式: [u4e00-u9fa5] 评注:匹配中文还真是个头疼的事,有了这个表达式就好办了 匹配双字节字符(包括汉字在内):[^x00-xff] 评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) 匹配空白行的正则表达式:ns*r 评注:可以用来删除空白行 匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> 评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力 匹配首尾空白

D21_1.1_正则表达式_单个字符匹配

# ### re.findall 找到所有与正则表达式相匹配的字符串 语法: lst = re.findall(正则表达式,字符串) # (1) 预定义字符集 # \d 匹配数字 # \D 匹配非数字 # \w 匹配字母或数字或下划线 (正则函数中,支持中文的匹配) # \W 匹配非字母或数字或下划线 # \s 匹配任意的空白符, 也就是 \n \t \r " " # \S 匹配任意非空白符 # \n 匹配一个换行符 [最好在正则表达式的前面加上r,让转义字符失效,原型化匹配] # \

正则表达式 小括号导致匹配项重复

正则表达式 小括号导致匹配项重复,暂时没找到原因, var reg4=/([0-9])/; var num="$999"; document.write(num.match(reg4) + "<br />"); //9,9 两次 var reg5=/[0-9]/; var num = "$999"; document.write(num.match(reg5) + "<br />"); //9 一次 后

NLP: 中文分词---正向匹配 (Forward Matching)

在采用FMM (正向最大匹配) 进行中文分词的时候, 可能会存在比较多的交集歧义, 这个时候为了解决交集歧义的问题, 可以采用 FM (Forwar Matching, 正向匹配) 进行中文分词, 正向匹配会在最大匹配的路径上查找所有可能成词的term(这里所有可能成词的term的意思是在构建索引的时候所有切分出来的词, 因为不是路径上的所有节点都会是切分成的词). http://blog.csdn.net/watkinsong/article/details/37696389 这个文章中给出了

Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := '<html><head><title>标题</title></head><body>内容</body></html>';   reg.RegEx  := '<.*>';

Delphi 正则表达式语法(9): 临界匹配 - 也叫&quot;预搜索&quot;与&quot;反向预搜索&quot;

Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索" //匹配右边 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'Delphi 6; Delphi 7; Delphi 2007; Delphi Net';   reg.RegEx  := 'Delphi (?=2007)'; // ?=   reg.Replacement :

python 中文正则表达匹配

需求:由于某个n年前的工具的错误,在复制一批文件的时候产生了大量的"复件xxxxxxx""复件(2)XXXXX"等类似文件,由于目录结构深,文件多,预计在5000万个,但是有多少这种错误的文件不清楚,因此写个脚本遍历删除. #encoding=utf-8 #author: skybug #date: 2014-05-11 #function: 遍历指目录,删除中文开头的文件名的图片 import os,re cnt = 0 pattern = re.compile(

UTF-8和UTF-8无BOM,一个会导致文件中中文变量无法匹配的bug

昨晚用dom4j中的selectSingleNode解析xml,匹配节点. 发现匹配不到,但是确实存在该节点 将regex改为regex1后则可以匹配,也就是说文件中的"阿里旺旺"和程序中的"阿里旺旺"不相等. 此时有经验的人都会想到编码问题,于是我尝试各种编码发现都不行,结果最后在此处发现UTF-8还有两种格式 尝试讲文件换成UTF-8无BOM格式则匹配成功 查阅资料发现BOM其实是一个编码标识符,用来标识该文件的编码的,因此windows下程序读取文件的时候会有