關於PythonRegex的問題

來源:互聯網
上載者:User
 

 代碼

#! /usr/bin/env python
#coding=utf-8
import re
str=r'<docitem key="founded_place"><![CDATA[中國 廣東 深圳]]></docitem>'
r=re.compile(r'<docitem key="(.*)">(.*)</docitem>')
m = r.match(str)

print m.group(0)
print m.group(1)
print m.group(2)

print '==========================================='

str2=m.group(2)
str2=str
print str2
r2=re.compile(r".*<!\[CDATA\[(.*?)]]>")
m2 = r2.match(str2)
print m2.group(1)

 

<docitem key="founded_place"><![CDATA[中國 廣東 深圳]]></docitem>

founded_place<![CDATA[中國 廣東 深圳]]>===========================================<docitem key="founded_place"><![CDATA[中國 廣東 深圳]]></docitem>中國 廣東 深圳

 

這裡有和perlRegex不同的地方 ,如果在perl中,模式串為(r"<![CDATA[(.*?)]]>")即可,但是在Python中,前面必須加上".*",才能正常使用,還有"["必須加反斜線轉義。最終如下式所示:

(r".*<!\[CDATA\[(.*?)]]>")

 

 

另外一個問題是Python對於編碼問題處理的不是很好,很多時候不同編碼的字元需要改變編碼方式

#! /usr/bin/env python

#coding=utf-8

import sys

reload(sys)

sys.setdefaultencoding('gbk')

import re

 

pchinese=re.compile(ur'([\u4e00-\u9fa5]+)+?',re.U)

s=u'12345測試用字串67890,45這是另一個44哈'

m=pchinese.findall(s)

if m:

    print( '|'.join(m))

else:

    print( 'no found!')

 

 

#! /usr/bin/env python

#coding=utf-8

#! /usr/bin/env python

#coding=utf-8

import re

import sys

reload(sys)

sys.setdefaultencoding('gbk')

str1=r'<docitem key="founded_place"><![CDATA[中國 廣東 深圳]]></docitem>'

#str1=r" CDATA[中國 廣東 深圳]"

#str1=unicode(str1, 'utf8')

print type(str1)

re2=r".*CDATA\[(.*?)\]"

#re2=unicode(re2, 'utf8')

#print type(re2)

r= re.compile(re2)        #[\u4e00-\u9fa5]

m = r.match(str1)

print m.group(0)

print m.group(1) 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.