2010-02-12 82 views
1

我試圖在大文本文件中找到格式爲{{rdex|001|001|Bulbasaur|2|Grass|Poison}}的所有字符串,然後提取對應於第一個001的子字符串,然後Bulbasaur,也許是一個元組。Python MediaWiki表正則表達式(查找特定格式的字符串,然後提取子字符串)

我假設帶有捕獲組的正則表達式可以用於兩者;任何人都可以告訴我適用於Python 3.1的正則表達式以及可能的代碼大綱?我是一個正則表達式noob。

謝謝!

回答

1
import re 
text="""{{rdex|001|001|Bulbasaur|2|Grass|Poison}}""" 
re.findall("\{\{[^|]+\|(\d+)\|\d+\|([^|]+)",text) 
[('001', 'Bulbasaur')] 
+0

是一些蒼蠅正則表達式就在那裏。我可以問,你從哪裏學到的?是來自一本書/互聯網教程/神聖的禮物嗎?非常感謝! – 2010-02-12 03:07:08

+0

MSDN的正則表達式語法頁面是我對正則表達式的第一印象http://msdn.microsoft.com/zh-cn/library/1400241x(VS.85).aspx – YOU 2010-02-12 03:24:23

1
re.match('^{{[^|]+\|([^|]+)\|[^|]+\|([^|]+)\|[^|]+\|[^|]+\|[^|]+\}}$', S).groups() 
0
line="{{rdex|001|001|Bulbasaur|2|Grass|Poison}}" 
s=line.find("{{") 
e=line.find("}}") 
if s != -1 and e != -1: 
    sub=line[s+2:e].split("|") 
    print sub[1],sub[3] 

輸出

$ ./python.py 
001 Bulbasaur