2012-05-29 38 views
0

喜正則表達式subsubgroup名字,我有以下再工作正常:的Jython的應用re.sub

re.sub("(?P<colon>(,)\s*|^)(?P<field>[A-Za-z]*)", "\\g<colon>`\\g<field>`", fields 

但是我想做到這一點(捕捉內組):

re.sub("((?P<colon>,)\s*|^)(?P<field>[A-Za-z]*)", "\\g<colon>`\\g<field>`", fields 

然而,如果我嘗試引用羣組中的羣組(例如,此羣組中僅包含g:r(e(g)e)x),我會收到一個unmatched group錯誤/異常。

所以我如何引用嵌套捕獲基團或者是它不可能使用Jython(約蟒2.5.1)

編輯:根據從Qtax(AZ => A-ZA-z)的回答固定但我真正的問題還沒有解決

回答

1

所有這些組捕獲,其中一些只是沒有命名。你應該能夠引用任何捕獲組,雖然我不知道python/jython正則表達式的核心。試着像一個表達式:

re.sub("(?:(,)\s*|^)([A-Za-z]*)", r"\1`\2`", ...) 

,如果你的意思是A-Za-z不能使用[A-z],可寫[A-Za-z]或一些不區分大小寫的標誌使用,例如(?i)[a-z]

+0

您是否介意爲什麼我不能使用[A-z],因爲目前它顯示了預期的行爲。我試着按照你的建議編號,但是這樣會產生錯誤,因此我嘗試了命名的子組。我也厭倦了之前的非捕獲部分('?:'),但這也沒有幫助。 – ted

+1

@ted,'[A-z]'表示ASCII表中包含'A'和'z'的任何字符。這不僅包括字母,還包括[任何ASCII表](http://en.wikipedia.org/wiki/ASCII)。 – Qtax