python 單引號 正則表示

前幾日碰到一個字符匹配問題,整了個下午,也沒整出來,無奈只好求助百度,python羣,幸運的是碰到了扯淡羣104497695(itianda管理員),呵呵

聽着很扯,但是還是有高手的,這不這個問題解決了嗎,所以分享下,爲以後學習python的入門者分享點經驗。

 

分析原因:沒搞清楚 [ab]和ab的區別,[ab]是隻要匹配[]中的任意一個,即a或者b,而ab是都匹配且必須是*ab*這樣的格式,比如 acddbabcdd , [ab] 和ab的結果:

>>> n = 'acddbabcdd'
>>> patt = re.compile('[ab]')
>>> m = patt.search(n)
>>> m.group()
'a'

>>> patt = re.compile('ab')
>>> m = patt.search(n)
>>> m.group()
'ab'
>>>

 

要取出 a中LABEL中的值 'name=DLLS,tnam=ad'

>>> a = r"LABEL='name=DLLS,tnam=ad',UID='1222'"

>>> M = 'LABEL'

>>> patt = re.compile(M + "='(.+')',")
>>> m = patt.search(a)
>>> m
>>> patt = re.compile(M + "='(.+)',")
>>> m = patt.search(a)
>>> m
<_sre.SRE_Match object at 0x0122D960>
>>> m.group(1)
'name=DLLS,tnam=ad'

別急,要想得到UID的怎麼辦那?

改寫

>>> patt = re.compile(M + "='(.+)',?")

表示號可有可無。

>>> M = 'UID'
>>> m = patt.search(a)

>>> m.group(1)
'1222'

得到了想要的結果。

 

補充,要得到每一個= 號前的屬性名值,可以這樣寫:

import re

a = r"LABEL='name=DLLS,tnam='ad'',UID='1222'"
re = re.compile("(([A-Z]+)='((.+')|([0-9]+))')")
m = re.findall(a)
for i in m:
    print i[1] + ' = ' + i[2]

結果:

LABEL = name=DLLS,tnam='ad'
UID = 1222

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章