1

aa{{{a {{ {aaa{に翻訳したい文字列がありますaa { { {a { { {aaa {。基本的に、すべて{の前にスペース文字が必要です。

現在使用している正規表現置換関数は次のとおりre.sub(r'[^\ ]{', lambda x:x.group(0)[0]+' {', test_case) です。関数の結果は次のとおりです:(aa {{ {a { { {aaa {閉じますが{{、文字列に a があります)

私の方法は、のようなセクションで非常にうまく機能しa{a{aます。ただし、2人の{キャラクターが一緒にいる場合、最初のキャラクターだけに作用し、次のことを完全に無視してa{{aいるように見えます.{{

より明確な例は、 の大規模なシリーズです{{{{{{{{{{{{。私の正規表現置換は次を返します: { {{ {{ {{ {{ {{ {. しっかりとネストされた他のすべての文字を明らかにスキップします{

なぜ彼らはスキップしているのですか?この混乱を解くための助けがあれば大歓迎です!

PS 開いている中かっこをすべて閉じたいという強い願望を持っているすべての人に申し訳ありません。

4

3 に答える 3

4

私はネガティブルックビハインドを使用します:

re.sub(r'(?<!\s)(\{)',r' \1','{{{{{{')

基本的に、。にヒットするまで文字列を解析します{。前の文字が空白((?<!\s)ビット)でない場合、{一致し、前のスペースに置き換えます。

于 2013-01-30T02:50:55.383 に答える
2

正規表現が2文字を消費しているため、スキップしています:[^\ ]{。前のスペースを消費しないようにするには、前のスペースに0幅の負のルックビハインドを使用する必要があります(?!<\s){" {"次に、ラムダの手間をかけずに、それをに置き換えることができます。

于 2013-01-30T02:50:30.733 に答える
1

私はこれがトリックを行うことを願っています:

re.sub (' *{', ' {', test_case)
于 2013-01-30T02:49:31.863 に答える