2016-03-13 48 views
-2

我有stringText像正則表達式使用Python/re.match不起作用

sText ="""<firstName name="hello morning" id="2342"/> 
<mainDescription description="cooking food blog 5 years"/> 
<special description="G10X, U16X, U17X, G26X, C32X, G34X, G37X, U39X, C40X, G46X,C49X, U54X, U55X, A58X"/> 
""" 

我想收到:

cooking food blog 5 years

我嘗試過許多不同的正則表達式

如:

p = re.compile('<mainDescription description=\"([^\"]+)\"\/>') 
print re.match(p, sText) 

p = re.compile(ur'<mainDescription description="([^"]+)"\/>') 

,並使用(+) 根據regex101.com我正則表達式應能正常工作,但事實並非如此。 我不知道爲什麼

回答

1

嘗試使用的findAll():

print re.findall('<mainDescription description=\"([^\"]+)\"\/>', sText) 

輸出:

['cooking food blog 5 years'] 
+0

Traceback(最近一次調用最後一次) : 文件「search_12.py」,第10行,在 print re.search(p,sText).group(0) 文件「C:\ Miniconda2 \ lib \ re.py」,行146,在搜索 返回_compile(模式,標誌).search(字符串) TypeError:期望的字符串或緩衝區 – eudaimonia

+0

對不起,我複製粘貼壞一個 - > Traceback(最近調用最後一個): AttributeError:'NoneType'對象沒有屬性'組' – eudaimonia

+1

試試只用findall – JRazor

0

似乎是因爲你使用re.match()而不是re.search()re.match()從字符串的開始搜索,而re.search()在任何地方搜索。這工作:

sText ="""<firstName name="hello morning" id="2342"/> 
<mainDescription description="cooking food blog 5 years"/> 
<special description="G10X, U16X, U17X, G26X, C32X, G34X, G37X, U39X, C40X, G46X,C49X, U54X, U55X, A58X"/> 
""" 
p = re.compile('<mainDescription description=\"([^\"]+)\"\/>') 
print re.search(p, sText).group(1) 

順便說一句,你不需要逃脫引號(")如果你使用'的意義,這是不夠的:

re.search('<mainDescription description="([^"]+)"/>', sText) 
+0

我以前試過re.search - 不起作用 – eudaimonia

+0

@PLeLearn不完全確定它爲什麼不適合你,但是如果你要複製粘貼我的代碼,它應該可以工作: -/ – Bharel

0

re.match返回一個match對象,您需要從中檢索所需的組。

sText ="""<firstName name="hello morning" id="2342"/> 
<mainDescription description="cooking food blog 5 years"/> 
<special description="G10X, U16X, U17X, G26X, C32X, G34X, G37X, U39X, C40X, G46X,C49X, U54X, U55X, A58X"/> 
""" 
r = re.compile("""<mainDescription description="(?P<description>[^"]+)"\/>""") 
m = r.match(sText) 
print m.group('description') 

注意,它也可以訪問使用索引組(0在這種情況下),但我更喜歡指定關鍵字。

+0

AttributeError:'NoneType'對象沒有屬性'group' – JRazor

+0

它應該工作,我知道但是 – eudaimonia