2012-03-16 14 views
0

まずコード:Pythonの正規表現の障害

str = "(suf) some text here (stuff here)" 
r = re.split(r"(?<=[\)]) (?=[\w\(])", str) 

これは私がフォーマットされたファイルを解析するために使用しているいくつかのコードのサンプルです。私は基本的に結果として('suf','some text here (stuff here)')を取得しようとしています。私はいろいろな順列を試しましたが、それは私に与えるすべての文字列です。

+4

Iそれを実行して、私は['(suf)'、 'ここにいくつかのテキスト(ここにあるもの)']、あなたが探しているものではありませんか? – xitrium

+0

私のためにも動作します。これが失敗したときに使用している文字列(実際の文字列)が正しいと確信していますか?その 'repr()'値を与えてみてください。 –

+0

問題を再現できませんでした – Atif

答えて

1

あなたは内部のマッチをキャプチャしないで、文字列を分割しています。 あなたはこれがmatchで動作し、第一ブラケットと二つのオブジェクトへの他のすべての内部で文字列をキャプチャしたい場合は(あまりにも分割で動作するかもしれない、これは私がこれを行うのと同じ方法です):

str = "(suf) some text here (stuff here)" 
# capture anything inside first set of brackets 
# then capture everything else, dropping any spaces between them 
r = re.match(r"^\((.*?)\)\s*(.*)", str) 
r.groups() 
r.group(1) # group(0) is the full original string 
r.group(2)