2009-03-03 6 views
13

Pythonで正規表現をデバッグする方法はありますか?彼らは:)Pythonで正規表現をどのようにデバッグできますか?

EDITを仕事まで、私はしようと試みるのプロセスに言及していないよ:ここに正規表現はPerlでデバッグすることができる方法である。


use re 'debug'; 

my $str = "GET http://some-site.com HTTP/1.1"; 
if($str =~/get\s+(\S+)/i) { 
    print "MATCH:$1\n"; 
} 

上記のコードは私に次の出力を生成します

あなたには、いくつかの正規表現ツールを使用していないのはなぜ

Compiling REx "get\s+(\S+)" 
Final program: 
    1: EXACTF (3) 
    3: PLUS (5) 
    4: SPACE (0) 
    5: OPEN1 (7) 
    7: PLUS (9) 
    8:  NSPACE (0) 
    9: CLOSE1 (11) 
    11: END (0) 
stclass EXACTF minlen 5 
Matching REx "get\s+(\S+)" against "GET http://some-site.com HTTP/1.1" 
Matching stclass EXACTF against "GET http://some-site.com HTTP/1.1" (33 chars) 
    0   | 1:EXACTF (3) 
    3  | 3:PLUS(5) 
            SPACE can match 1 times out of 2147483647... 
    4  | 5: OPEN1(7) 
    4  | 7: PLUS(9) 
            NSPACE can match 20 times out of 2147483647... 
    24  | 9: CLOSE1(11) 
    24  | 11: END(0) 
Match successful! 
MATCH:http://some-site.com 
Freeing REx: "get\s+(\S+)" 

+0

真剣に:あなたの正規表現+サンプルデータを与えますか? – annakata

+0

サンプルコードがないと、問題は何かを推測できます。 –

+3

私は今正規表現の問題はありません。私はデバッグを実行する方法を知りたいだけです。 – Geo

答えて

17
 

>>> p = re.compile('.*', re.DEBUG) 
max_repeat 0 65535 
    any None 
>>>       
 

regex '|' operator vs separate runs for each sub-expression

+7

これは答えの半分で、正規表現がコンパイルする内容を示していますが、指定された文字列。誰かが他の半分を知っている場合は、共有してください! – Nickolay

1

(私は通常Regulatorを使用)し、そこ正規表現式をテストし、あなたが満たされたときに、ちょうどあなたのコードに貼り付け/コピー:ときコンピュータが走りました。

+0

正規表現ツールを使用しても正規表現が機能しない理由はわかりません。 – Geo

+0

@Geo - "働いていない"ということはどういう意味ですか?まったく動作していない、一致させたいものと一致しない、または... – Rook

+1

明白なことを言う危険性があるので、正規表現ツールはあなたに正しいマッチを与えていない理由を伝えることはできません。正規表現はあなたが言っていることを正確に行うつもりであり、どのツールでもできることは、あなたが何かを間違えているかを自分で判断できるようにすることです。 – Noldorin

-1

Pythonでこのようなことを直接行うことについては不明ですが、私は間違いなくRegExエディタツールを使用することをお勧めします。とにかくそれはあなたの最善の策になる可能性が高いです。個人的には、私はThe Regulatorを使用して、非常に役立つことがわかりました。他の一部はthis SO threadに記載されています。すでに述べたと同様に

-1

は、私はかなり頻繁に迅速なチェック(オンライン正規表現プロトタイパ)のためRegexPalを使用もあります。シンプルな表現に加えて、多くの共通表現がリストされています。あなたが専用のツールを持っておらず、単純な正規表現を作るための素早い方法が必要なときは非常に便利です。

+0

なぜ落選ですか? –

0

RegexBuddyには他のツールにはないものがあり、debuggerが組み込まれており、成功した試行と失敗した試行の両方の一致プロセスが表示されます。他のツールは、最終結果(RegexBuddyも表示できる)のみを表示します。

1

https://www.debuggex.comもかなり良いです。これは、オンラインのPython(およびいくつかの言語を含む)デバッガです。これは、何が一致していないのか、何が一致しないのかをきれいに視覚化しています。すぐに正規表現を書く必要があるなら、かなり良いリソースです。

+2

ああ、これは最下位の最善の答えです、私はここで掘ってうれしいです。それは素晴らしいツールです、それは無料で、オンラインです(インストールされず、OSに依存しません)、それは瞬きの中で私の問題(}ではなく愚かなタイプミス)を解決しました!ありがとう! – Davide

関連する問題