亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

Python 中文正則表達式筆記

2020-03-16 21:12:57
字體:
來源:轉載
供稿:網友
總結在 python 語言里使用正則表達式匹配中文的經驗。
 
 

從字符串的角度來說,中文不如英文整齊、規范,這是不可避免的現實。本文結合網上資料以及個人經驗,以 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]+",來自定義所需要匹配的文本。 
匹配中文時,正則表達式和目標字串的格式必須相同。這一點至關重要?;蛘叨加媚J的utf8,此時你不用額外做什么;如果是unicode,就需要在正則式之前加上u""格式。 
可以這樣定義unicode字符串:string=u"我愛正則表達式"。如果字串不是unicode的,可以使用unicode()函數轉換之。如果你知道源字串的編碼,可以使用newstr=unicode(oldstring, original_coding_name)的方式轉換,例如 linux 下常用unicode(string, "utf8"),windows 下或許會用cp936吧,沒測試。 
例程序 

復制代碼代碼如下:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

#author: rex 
#blog: http://iregex.org 
#filename py_utf8_unicode.py 
#created: 2010-06-27 09:11 
import re 
def findPart(regex, text, name): 
res=re.findall(regex, text) 
if res: 
print "There are %d %s parts:/n"% (len(res), name) 
for r in res: 
print "/t",r 
print 
#sample is utf8 by default. 
sample='''en: Regular expression is a powerful tool for manipulating text. 
zh: 正則表達式是一種很有用的處理文本的工具。 
jp: 正規表現は非常に役に立つツールテキストを操作することです。 
jp-char: あアいイうウえエおオ 
kr:?? ???? ?? ??? ?? ???? ???? ????. 
puc: 。?!、,;:“ ”‘ '——……·-·《》〈〉!¥%&*# 
''' 
#let's look its raw representation under the hood: 
print "the raw utf8 string is:/n", repr(sample) 
print 
#find the non-ascii chars: 
findPart(r"[/x80-/xff]+",sample,"non-ascii") 
#convert the utf8 to unicode 
usample=unicode(sample,'utf8') 
#let's look its raw representation under the hood: 
print "the raw unicode string is:/n", repr(usample) 
print 
#get each language parts: 
findPart(u"[/u4e00-/u9fa5]+", usample, "unicode chinese") 
findPart(u"[/uac00-/ud7ff]+", usample, "unicode korean") 
findPart(u"[/u30a0-/u30ff]+", usample, "unicode japanese katakana") 
findPart(u"[/u3040-/u309f]+", usample, "unicode japanese hiragana") 
findPart(u"[/u3000-/u303f/ufb00-/ufffd]+", usample, "unicode cjk Punctuation") 

其輸出結果為: 
復制代碼代碼如下:

the raw utf8 string is: 
'en: Regular expression is a powerful tool for manipulating text./nzh: /xe6/xad/xa3/xe5/x88/x99/xe8/xa1/xa8/xe8/xbe/xbe/xe5/xbc/x8f/xe6/x98/xaf/xe4/xb8/x80/xe7/xa7/x8d/xe5/xbe/x88/xe6/x9c/x89/xe7/x94/xa8/xe7/x9a/x84/xe5/xa4/x84/xe7/x90/x86/xe6/x96/x87/xe6/x9c/xac/xe7/x9a/x84/xe5/xb7/xa5/xe5/x85/xb7/xe3/x80/x82/njp: /xe6/xad/xa3/xe8/xa6/x8f/xe8/xa1/xa8/xe7/x8f/xbe/xe3/x81/xaf/xe9/x9d/x9e/xe5/xb8/xb8/xe3/x81/xab/xe5/xbd/xb9/xe3/x81/xab/xe7/xab/x8b/xe3/x81/xa4/xe3/x83/x84/xe3/x83/xbc/xe3/x83/xab/xe3/x83/x86/xe3/x82/xad/xe3/x82/xb9/xe3/x83/x88/xe3/x82/x92/xe6/x93/x8d/xe4/xbd/x9c/xe3/x81/x99/xe3/x82/x8b/xe3/x81/x93/xe3/x81/xa8/xe3/x81/xa7/xe3/x81/x99/xe3/x80/x82/njp-char: /xe3/x81/x82/xe3/x82/xa2/xe3/x81/x84/xe3/x82/xa4/xe3/x81/x86/xe3/x82/xa6/xe3/x81/x88/xe3/x82/xa8/xe3/x81/x8a/xe3/x82/xaa/nkr:/xec/xa0/x95/xea/xb7/x9c /xed/x91/x9c/xed/x98/x84/xec/x8b/x9d/xec/x9d/x80 /xeb/xa7/xa4/xec/x9a/xb0 /xec/x9c/xa0/xec/x9a/xa9/xed/x95/x9c /xeb/x8f/x84/xea/xb5/xac /xed/x85/x8d/xec/x8a/xa4/xed/x8a/xb8/xeb/xa5/xbc /xec/xa1/xb0/xec/x9e/x91/xed/x95/x98/xeb/x8a/x94 /xea/xb2/x83/xec/x9e/x85/xeb/x8b/x88/xeb/x8b/xa4./npuc: /xe3/x80/x82/xef/xbc/x9f/xef/xbc/x81/xe3/x80/x81/xef/xbc/x8c/xef/xbc/x9b/xef/xbc/x9a/xe2/x80/x9c /xe2/x80/x9d/xe2/x80/x98 /xe2/x80/x99/xe2/x80/x94/xe2/x80/x94/xe2/x80/xa6/xe2/x80/xa6/xc2/xb7/xef/xbc/x8d/xc2/xb7/xe3/x80/x8a/xe3/x80/x8b/xe3/x80/x88/xe3/x80/x89/xef/xbc/x81/xef/xbf/xa5/xef/xbc/x85/xef/xbc/x86/xef/xbc/x8a/xef/xbc/x83/n' 
There are 14 non-ascii parts: 
正則表達式是一種很有用的處理文本的工具。 
正規表現は非常に役に立つツールテキストを操作することです。 
あアいイうウえエおオ 
?? 
???? 
?? 
??? 
?? 
???? 
???? 
???? 
。?!、,;:“ 
”‘ 
'——……·-·《》〈〉!¥%&*# 
the raw unicode string is: 
u'en: Regular expression is a powerful tool for manipulating text./nzh: /u6b63/u5219/u8868/u8fbe/u5f0f/u662f/u4e00/u79cd/u5f88/u6709/u7528/u7684/u5904/u7406/u6587/u672c/u7684/u5de5/u5177/u3002/njp: /u6b63/u898f/u8868/u73fe/u306f/u975e/u5e38/u306b/u5f79/u306b/u7acb/u3064/u30c4/u30fc/u30eb/u30c6/u30ad/u30b9/u30c8/u3092/u64cd/u4f5c/u3059/u308b/u3053/u3068/u3067/u3059/u3002/njp-char: /u3042/u30a2/u3044/u30a4/u3046/u30a6/u3048/u30a8/u304a/u30aa/nkr:/uc815/uaddc /ud45c/ud604/uc2dd/uc740 /ub9e4/uc6b0 /uc720/uc6a9/ud55c /ub3c4/uad6c /ud14d/uc2a4/ud2b8/ub97c /uc870/uc791/ud558/ub294 /uac83/uc785/ub2c8/ub2e4./npuc: /u3002/uff1f/uff01/u3001/uff0c/uff1b/uff1a/u201c /u201d/u2018 /u2019/u2014/u2014/u2026/u2026/xb7/uff0d/xb7/u300a/u300b/u3008/u3009/uff01/uffe5/uff05/uff06/uff0a/uff03/n' 
There are 6 unicode chinese parts: 
正則表達式是一種很有用的處理文本的工具 
正規表現 
非常 
役 
立 
操作 
There are 8 unicode korean parts: 
?? 
???? 
?? 
??? 
?? 
???? 
???? 
???? 
There are 6 unicode japanese katakana parts: 
ツールテキスト 
ア 
イ 
ウ 
エ 
オ 
There are 11 unicode japanese hiragana parts: 
は 
に 
に 
つ 
を 
することです 
あ 
い 
う 
え 
お 
There are 5 unicode cjk Punctuation parts: 
。 
。 
。?!、,;: 
- 
《》〈〉?。ぃィΓ?nbsp;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久伊人91精品综合网站| 亚洲xxxx做受欧美| 久久视频免费在线播放| 成人激情视频小说免费下载| 97精品视频在线播放| 亚洲在线免费看| 国产精品av在线播放| 亚洲视频电影图片偷拍一区| 欧美成人精品在线播放| 日韩av在线高清| 成人欧美一区二区三区黑人孕妇| 亚洲激情久久久| 国产精品福利小视频| 国内精品免费午夜毛片| 精品高清美女精品国产区| 日本一区二三区好的精华液| 国产精品国产三级国产专播精品人| 亚洲97在线观看| 国产日韩欧美日韩大片| 亚洲国产精品va在线观看黑人| 美日韩在线视频| 欧美成aaa人片在线观看蜜臀| 亚洲国产小视频在线观看| 欧美日韩精品在线视频| 欧美午夜激情在线| 日韩电影免费在线观看| 欧美色视频日本版| 久久久这里只有精品视频| 波霸ol色综合久久| 日韩视频免费看| 日韩欧美国产高清91| 日韩av在线网址| 国产成人综合久久| 国产精品亚洲第一区| 91免费人成网站在线观看18| 北条麻妃一区二区三区中文字幕| 91亚洲精品久久久| 午夜精品一区二区三区在线视| www.久久草.com| 国产精品视频免费观看www| 国产免费一区视频观看免费| 欧美另类99xxxxx| 中文字幕日韩精品有码视频| 狠狠色狠狠色综合日日小说| 精品视频久久久久久久| 色妞色视频一区二区三区四区| 国产精品福利观看| 国产精品第一视频| 上原亚衣av一区二区三区| 欧美激情国内偷拍| 国模精品一区二区三区色天香| 亚洲国产精品va| 超薄丝袜一区二区| 热门国产精品亚洲第一区在线| 91高潮在线观看| 国产精品pans私拍| 国产日韩欧美夫妻视频在线观看| 国产视频亚洲精品| 91精品国产一区| 亚洲丝袜在线视频| 成人免费午夜电影| 亚洲国产精品va| 亚洲欧美日韩直播| 伦伦影院午夜日韩欧美限制| 久久99久久亚洲国产| 亚洲四色影视在线观看| 成人动漫网站在线观看| 国产丝袜精品第一页| 国产精品专区一| 国产精品18久久久久久首页狼| 亚洲人高潮女人毛茸茸| 亚洲国产精品成人va在线观看| 97香蕉超级碰碰久久免费的优势| 亚洲精品一区中文字幕乱码| 国产又爽又黄的激情精品视频| 久久久影视精品| 91高清视频免费观看| 日韩电影免费观看在线| 欧美精品videosex牲欧美| 视频在线观看99| 国产精品久久久精品| 亚洲xxxxx电影| 日韩电影中文字幕av| 国产精品美女在线观看| 欧美另类交人妖| 国产美女精品视频| 精品福利免费观看| 国产精品一区二区久久精品| 色系列之999| 久久久久中文字幕| 日韩欧美精品网站| 亚洲桃花岛网站| 国产精品igao视频| 亚洲一区二区中文字幕| 久久久黄色av| 92版电视剧仙鹤神针在线观看| 亚洲精品一区二区久| 7777免费精品视频| 久久国产精品99国产精| 91po在线观看91精品国产性色| 欧美电影免费在线观看| 大伊人狠狠躁夜夜躁av一区| 久久精品青青大伊人av| 日韩高清欧美高清| 国产成人午夜视频网址| 午夜精品久久17c| 久久久久久久网站| 亚洲视频一区二区| 欧美日韩国产一区二区| 日本久久久久亚洲中字幕| 国产欧美一区二区三区视频| 成人网址在线观看| 日韩亚洲成人av在线| 国产亚洲欧美日韩一区二区| 欧美一级视频在线观看| 91在线观看免费高清完整版在线观看| 日本久久久久久久久| 亚洲人精品午夜在线观看| 亚洲第一福利网站| 91av在线精品| 热久久这里只有| 日韩欧亚中文在线| 亚洲аv电影天堂网| 欧美多人乱p欧美4p久久| 亚洲夜晚福利在线观看| 国产精品一区专区欧美日韩| 亚洲成人精品视频| 一区二区av在线| 亚洲精品有码在线| 久久精品国产亚洲一区二区| 欧美精品手机在线| 国产成人一区二区| 欧美日韩日本国产| 97香蕉超级碰碰久久免费的优势| 国产日韩欧美夫妻视频在线观看| 一道本无吗dⅴd在线播放一区| 国产精品美女久久| 欧美成人免费小视频| 黄色一区二区在线| 亚洲尤物视频网| 日韩精品高清视频| 欧美激情精品久久久久| 浅井舞香一区二区| 亚洲黄色av网站| 欧美丰满少妇xxxxx| 亚洲91精品在线观看| 日韩欧美国产激情| 日韩av在线不卡| 国产精品入口免费视| 在线视频国产日韩| 亚洲精品v欧美精品v日韩精品| 日韩国产欧美精品在线| 日韩精品在线观| 黄色精品一区二区| 亚洲影视九九影院在线观看| 国产精自产拍久久久久久| 51ⅴ精品国产91久久久久久| 免费av一区二区| 亚洲黄色在线观看| 国产一区二区在线播放| 久久久国产精品一区| 欧美日韩精品在线播放| 欧美肥婆姓交大片| 91国产美女视频|