2012-12-12 17 views
1

予有這種串的Python - 正則表達式,如何解壓縮?

str = "(\\pt 3 \\out I1, I2 \\img img.jpg)" 

我想提取3,I2,I2和img.jpg作爲一個單獨的值(I1,I2和作爲一個值)

我開始這樣

pattern = "\\pt (.)" 
re.findall(pattern, str) 

我得到第一個值3,但不知道如何提取另外兩個?

+0

哪個str'的​​'部分總是靜態的。即,您能提供更多需要匹配的字符串示例,或者可能提供描述字符串格式的模板。 – ladaghini

+0

這是模板str =「(\\ pt [value1] \\ out [value2 [\\ img value3])」 – Zed

回答

2

試試下面的正則表達式

>>> re.findall(r"\\\w+ ([^\\)]+)", str) 
['3 ', 'I1, I2 ', 'img.jpg'] 

你缺少的部分是,你需要了解

  • 什麼來獲取[^\\\)]+一切,除了一個\)
  • 如何開始\\\w+ 2斜線後跟任何單詞,後跟空格
0

你可以使用這個表達式: -

>>> pattern = '\\\w+ ([^\\)]+)' 
>>> re.findall(pattern, s) 
['3 ', 'I1, I2 ', 'img.jpg']