re.sub('a(b)','d','abc')
dc
であり、adc
ではない。では、なぜre.sub
はここでキャプチャグループを理解していないのですか?捕捉基を有するRe.sub
0
A
答えて
2
パターンの全体発生を置き換えることになっていますので:
戻り、置換replで文字列のパターンの左端の非重複発生を置き換えた文字列。
いくつかのサブグループだけを置き換える場合、いくつかのグループを持つ複雑な正規表現は機能しません。いくつかの可能な解決策があります。
- はフルでパターンを指定します:
re.sub('ab', 'ad', 'abc')
- それは非常に読みやすいと明示的だとして、私のお気に入り。re.sub('(a)b', r'\1d', 'abc')
前のオプションと同様に - :あなたはを維持し、その後、パターン(エスケープ回避するために、生の文字列でなければならないことに注意)でそれらを参照したい
- キャプチャグループ
repl
引数としてコールバック関数を提供し、Match
オブジェクトを処理させ、必要な結果を返します。 - マッチには含まれていませんが、一致に影響するlookbehinds/lookahedsを使用してください:
re.sub('(?<=a)b', r'd', 'abxb')
はadxb
です。グループの冒頭の?<=
には、「それは先読みだ」と書かれています。
+1
簡単なヒント:regex **: 're.match(r '([la] {2}) - \ 1'、 'la-la')'で '\ 1' **を使うことができます。これは、参照されたグループ(このケースでは '1 ')**にマッチする**(パターンではない)と一致するので、この正規表現は' la-al'と一致しません。 – math2001
関連する問題
- 1. SaxParser.parseでレスポンスコードを捕捉する方法
- 2. Extjsイベントを捕捉する(コンボボックス)
- 3. 未捕捉ReferenceErrorを取得する
- 4. アプリイベントをバックグラウンドで捕捉する
- 5. 迷惑メールネットワークトラフィックの捕捉
- 6. Java捕捉端末出力
- 7. 正規表現:捕捉基の位置のリストを取得し、
- 8. AliasMatchで捕捉するApacheリライトURL
- 9. タスク<TResult> .ConfigureAwait(偽)は、私は、コードのブロックの下有する捕捉コンテキスト
- 10. 捕捉セル列のクリックと実行イベント
- 11. 角度2捕捉401応答
- 12. 角度ジェスで未捕捉エラー:[$ injector:modulerr]
- 13. 捕捉されたネットワークトラフィックのオープンフローシミュレーション
- 14. 例外の捕捉順序は?
- 15. ファイルをダウンロードするときにエラーを捕捉する方法
- 16. コードでRuntimeExceptionsを捕捉するのはいつですか?
- 17. すべてのエラーを捕捉するpsql関数の例外
- 18. スウィフトクラッシュを捕捉してログを記録する方法
- 19. FiddlerCoreをSeleniumと組み合わせてネットワークトラフィックを捕捉する
- 20. Pythonでimaplib例外を捕捉する(IMAPClientパッケージを使用)
- 21. 正規表現:捕捉基に代替文字正規表現で
- 22. POSIX EREで陽性後読み又は非捕捉基(拡張正規表現)
- 23. レールでフェイルセーフ例外を捕捉する方法2.3.8
- 24. eventmachineとの接続解除イベントを捕捉する(ping + timeout?)
- 25. global.asaxでAJAX WebMethodエラーを捕捉するには?
- 26. PHPで外部イベントを捕捉するには?
- 27. レールのアプリケーションコントローラでMysql :: Error例外を捕捉する方法2.3.8
- 28. IONIC v2、iOS PUSH、レジスタでエラーを捕捉する方法
- 29. カーネルモジュールで信号を捕捉する方法
- 30. event.keyCodeを捕捉して別のkeyCodeに変更するには?
代替部分では使用しないので、どうしますか? "b"の前に "a"を置きたい場合は、re.sub( 'ab'、 'ad'、 'abc') 'または' re.sub( '(a)b' r '\ 1d'、 'abc') '、' '\ 1" 'はキャプチャグループを指します。 – DyZ
ありがとう!キャプチャグループがデフォルトに置き換えられることが予想されます。適切なアプローチはあまり直感的ではありませんが、おそらくより柔軟です。 – Nick