2011-09-21 49 views
0

我有以下的(簡化)代碼 - 這是我想要做的編輯組內容MatchObject

def replace_todo(m): 
    m[2] = '*' if value else ' ' 
    return m.group() 

我想在比賽中對象編輯一組特定的本質作用,然後渲染整個比賽,包括編輯過的部分。

的replace_todo功能被使用

myCompiledRegex.sub(replace_todo, text) 

被用作輸入的文字呼籲每場比賽是

[ ] mah lalalalalaa 
[*] mah lalalalalaa 

預期輸出

[*] mah lalalalalaa 
[*] mah lalalalalaa 

正則表達式看起來像這樣

^(\[(|\*)]) ([a-z][a-z][a-z]) (.*)$ 

但似乎我不能當我嘗試執行上面的代碼中,我得到以下類型錯誤提前

_sre.SRE_Match' object does not support item assignment 

謝謝:)

編輯的匹配對象

編輯:

使用spicavigo解決方案時,將列表轉換爲字符串(str(groups)),這是它看起來如何

[u’[ ]’, '*’, u’jsp’, u’do something’] 

這是應該如何看待

[*] jsp do something 
+0

請你能在你的問題包括幫助:(1)實際的正則表達式; (2)實際投入的一個或兩個實例以及預期產出。 – NPE

+0

完成:)但它是不是真的那麼重要,我需要的是編輯場比賽的單組的方式,然後輸出整場比賽:) – Moulde

回答

2

我是新手,當談到正則表達式,但可以不把m.groups()開始,改變任何你想,然後返回變量?

說:

x=list(m.groups()) #NOTE: groups and not group 
x[2] = '*' if value else ' ' 
return x 

編輯

也許現在我得到你所想要達到的目的。正如在下面的評論中提到,你可以改變你的正則表達式來

'^(\[)(|\*)(]) ([a-z][a-z][a-z]) (.*)$' 

這基本上是在加入列表m.groups()

+0

喔bucka,介紹了另一個問題 – Moulde

+0

這將無法正常工作因爲組不下令究竟應該如何呈現,basicly我需要的是一種方法來改變在比賽對象的值,這樣我可以調用組()函數,並把它輸出修改的輸入。如果我剛剛加入列表中的項目一起,金正日結束了這場「[] * xxxremember的東西」,但我需要這個「[*] XXX記得的東西」 – Moulde

+0

試着改變你的正則表達式來此 「^(\ [)(| \ *)(])([az] [az] [az])(。*)$' – spicavigo