2009-07-16 13 views
5

正規表現をテストするための多くの優れたオンラインツールとオフラインツールがありますが、正規表現エンジンが一致するものを見つけるための手順を見せるツール(RegexBuddy以外)はまだありません。一致するものはありません。正規表現をデバッグ/ステッピングするためのツールはありますか?

これを行うツールを知っている人はいますか?私が最初に除外した理由はRegexBuddyです。商業的であり、支払いを決める前に自分のオプションを調べることを好むからです。私が欲しいもの、それをより明確にするために

は、ここ(自分のホームページから)RegexBuddyからのスクリーンショットです: http://img166.imageshack.us/img166/1272/debug.png

+1

スクリーンショットが消失しました。 –

答えて

1

おそらくRegexCoachはあなたのために...

http://weitz.de/regex-coach/

探しているものを提供しています
+0

ありがとうございますが、すでにRegexCoachがインストールされています。それは簡単なステップバイステップの機能を持っていますが、それを使用する異なる正規表現間のパフォーマンスを比較するのは非常に難しいです。また、PCREで使用できる正規表現拡張もサポートしていません。 – Blixt

-1

正規表現エンジンがどのようにマッチするかは関係ありません。 RegexBuddyのスクリーンショットは、バックトラックを行う必要がないので、別のregexpマッチャーを使いたいと思っています。

通常、正規表現をバックトラッキングなしで正規表現を処理できるnondeterministic finite automaton (NFA)またはdeterministic finite automaton (DFA)に変換します。

私が知っている正規表現を作成してテストするための唯一の無料ツールはpyrebです。

+0

はい、私はそれのいくつかの例を見ました(http:// osteele。com/tools/reanimator /)、しかし、もし私がPCREと立ち往生しているのであれば、私はそれをバックトラッキングの芸術家の中に入れる何かを見逃さないようにしたいと思っています。 – Blixt

+0

さて、http://www.codinghorror.com/blog/archives/000488.htmlを読んだあと、regexpエンジンは実際にバックトラックを使用しているようです。主にグループをサポートしています。私の誤解を招くポストに申し訳ありません。 – Bluehorn

+0

うん、それはまさに私が避けようとしているものです=) – Blixt

2

それはRegexBuddyなどないほど強力ですが、それは簡単なオンラインインターフェイスです:http://www.gskinner.com/RegExr/

あなたは、式のマウスオーバー部品ことができますし、それはそれはやっているものを教えてくれます。非常に基本的ですが、あなたが何か愚かなことをすると時間を節約できます。例えばPerlで

4

あなたすることができ、常にちょうどuse re 'debug';またはuse re 'debugcolor';

あなたはPerlのにこれを入力したとします。

use strict; 
use warnings; 
use 5.010; 
use re 'debug'; 

# using the same strings as the question's image for reference: 

my $str = 'Even if I do say so myself: "RegexBuddy is awesome"'; 
$str =~ /(Regexp?Buddy is (awful|acceptable|awesome))/; 

これはあなたが出て得るものです:

Compiling REx "(Regexp?Buddy is (awful|acceptable|awesome))" 
Final program: 
    1: OPEN1 (3) 
    3: EXACT <Regex> (6) 
    6: CURLY {0,1} (10) 
    8:  EXACT <p> (0) 
    10: EXACT <Buddy is > (14) 
    14: OPEN2 (16) 
    16:  EXACT <a> (18) 
    18:  TRIEC-EXACT[cw] (29) # this is a new feature in Perl 5.10 
      <wful> 
      <cceptable> 
      <wesome> 
    29: CLOSE2 (31) 
    31: CLOSE1 (33) 
    33: END (0) 

anchored "Regex" at 0 floating "Buddy is a" at 5..6 (checking floating) minlen 19 
Guessing start of match in sv for REx "(Regexp?Buddy is (awful|acceptable|awesome))" against 'Even if I do say so myself: "RegexBuddy is awesome"' 
Found floating substr "Buddy is a" at offset 34... 
Found anchored substr "Regex" at offset 29... 
Starting position does not contradict # /^/m... 
Guessed: match at offset 29 

Matching REx "(Regexp?Buddy is (awful|acceptable|awesome))" against 'RegexBuddy is awesome"' 
    29 <'lf: "'> <RegexBuddy> | 1:OPEN1(3) 
    29 <'lf: "'> <RegexBuddy> | 3:EXACT <Regex>(6) 
    34 <Regex> <Buddy is a> | 6:CURLY {0,1}(10) 
            EXACT <p> can match 0 times out of 1... 
    34 <Regex> <Buddy is a> | 10: EXACT <Buddy is >(14) 
    43 <y is > <'awesome"'> | 14: OPEN2(16) 
    43 <y is > <'awesome"'> | 16: EXACT <a>(18) 
    44 < is a> <'wesome"'>  | 18: TRIEC-EXACT[cw](29) 
    44 < is a> <'wesome"'>  |  State: 2 Accepted: 0 Charid: 2 CP: 77 After State: 3 
    45 < is aw> <'esome"'>  |  State: 3 Accepted: 0 Charid: 7 CP: 65 After State: 10 
    46 < is awe> <'some"'>  |  State: 10 Accepted: 0 Charid: b CP: 73 After State: 11 
    47 < is awes> <'ome"'>  |  State: 11 Accepted: 0 Charid: c CP: 6f After State: 12 
    48 < is aweso> <'me"'>  |  State: 12 Accepted: 0 Charid: d CP: 6d After State: 13 
    49 < is awesom> <'e"'>  |  State: 13 Accepted: 0 Charid: 7 CP: 65 After State: 14 
    50 < is awesome> <'"'>  |  State: 14 Accepted: 1 Charid: 3 CP: 0 After State: 0 
            got 1 possible matches 
            only one match left: #3 <wesome> 
    50 < is awesome> <'"'>  | 29: CLOSE2(31) 
    50 < is awesome> <'"'>  | 31: CLOSE1(33) 
    50 < is awesome> <'"'>  | 33: END(0) 
Match successful! 
Freeing REx: "(Regexp?Buddy is (awful|acceptable|awesome))" 

(注:出力の一部を変更したので、強調表示されます)

1

Debuggexには、私がそこで見てきた最良のグラフィカルなアプローチがあります。基本的には、正規表現でDFAの図形がどのように見えるかを示し、一致の基本的な強調表示があり、一番下の部分に一致とDFAのダイアグラムを段階的に進めることができるスライダがあります:

enter image description here

関連する問題