difflibで正規表現を使用できますか?正規表現のPython difflib
具体的には、私がやってみたい:
difflib.context_diff(actual, gold)
実際は次のとおりです。
[master 92a406f] file modified
と金がある:
\[master \w{7}\] file modified
difflibで正規表現を使用できますか?正規表現のPython difflib
具体的には、私がやってみたい:
difflib.context_diff(actual, gold)
実際は次のとおりです。
[master 92a406f] file modified
と金がある:
\[master \w{7}\] file modified
あなたが欲しいという意味では同じように見えます実際のファイルの92a406f
部分を無視します。スクラブ金ファイルを保存し、その後
actual = re.sub(r"\[master \w{7}\]", "[master *******]", actual)
:あなたが無視したい部分をスクラブする正規表現を使用するスクラバーを記述する必要があります。次に、標準difflibを使用して、スクラブされた実際のものとスクラブされたものを比較することができます。
正規表現ベースの差分を実際に追求したい場合は、正規表現マッチングに基づいて__eq__
を定義する独自の文字列のようなオブジェクトを作成し、それらのオブジェクトのシーケンスに対してdifflibを使用できます。しかし、私はそれをお勧めしません。
こんにちは、あなたはどのように文字を比較し、文字の範囲を提供するのではなく、ソースコードで比較をどのように管理するのですか?a [besti-1] == b [bestj-1] 'と' a [ besti + bestsize] == b [bestj + bestsize] 'になります。 – Julio
difflibのfind_longest_match関数をコピーで置き換えますが、==呼び出しを、等価でないときはregexpとして解釈してtrueを返します。任意のエラー、例えば正規表現ではない正規表現)。
私は単体テストの期待出力マッチングにこれを使用していますが、これまでは本当にうまく動作しています。
こんにちは、私はあなたのソリューションに興味があります。パッチであなたの投稿を編集することは可能ですか?あなたは 'a [besti-1] == b [bestj-1]と' a [besti + bestsize] == b [bestj + bestsize]という行を変更したようですが、 'self.b2j'はどうでしょうか? ? – Julio
@ジュリオ:残念ながら、パッチは、もはや私が仕事をしていない会社にあります。しかし、私はb2jを使って何かをすることは覚えていません(これは私のバグがあるかもしれないし、そうでないかもしれないが、私が当時必要だったことをする) – PlasmaHH
あなたは何をしようとしていますか?私には、金の正規表現と実際のものとを一致させたいように見えます。なぜあなたはそれにdifflibを使いたいのですか? – Michael