2009-07-16 4 views
5

정규 표현식을 테스트하는 데 유용한 온라인 도구와 오프라인 도구가 많이 있지만, 정규식 엔진이 일치하는 항목을 찾을 수있는 도구를 찾고 있습니다 (RegexBuddy 외). 일치하지 않습니다.)정규식을 디버깅/스테핑 할 때 사용할 수있는 도구는 무엇입니까?

누구든지이 작업을 수행하는 도구를 알고 있습니까? 내가 처음에 RegexBuddy을 제외시킨 이유는 그것이 상업적이며, 비용을 지불하기 전에 내 옵션을 살펴 보는 것을 선호하기 때문입니다. http://img166.imageshack.us/img166/1272/debug.png

+1

스크린 샷이 사라졌습니다. –

답변

1

은 아마도 RegexCoach 당신을 위해 ...

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

원하는 것을 제공 :

여기 (자신의 홈 페이지에서) RegexBuddy에서 스크린 샷은, 내가 원하는 무엇을 명확하게하려면
+0

고마워,하지만 이미 RegexCoach가 설치되어있다. 그것은 간단한 단계별 기능을 가지고 있지만 그것을 사용하는 다른 정규 표현식 사이의 퍼포먼스를 비교하는 것은 매우 어렵습니다. 또한 PCRE에서 사용할 수있는 특정 정규 표현식 확장을 지원하지 않습니다. – Blixt

-1

정규식 엔진이 일치하는 것을 찾는 방법이 중요하지 않기 때문에 아마 그렇게 될 것입니다. RegexBuddy의 스크린 샷은 내가 backtracking을 할 필요가 없기 때문에 다른 regexp matcher를 사용하고자한다.

일반적으로 일반 표현식을 역 추적하지 않고 정규 표현식을 처리 할 수있는 nondeterministic finite automaton (NFA) 또는 deterministic finite automaton (DFA)으로 변환합니다.

내가 말한 정규식을 만들고 테스트하는 유일한 무료 도구는 pyreb입니다.

+0

예, 몇 가지 예를 보았습니다 (http : // osteele.co.kr/tools/reanimator /),하지만 PCRE가 붙어 있다면, 나는 그것을 되돌아 오는 광상곡지에 담는 무언가를 놓치지 않도록 할 수 있기를 바란다. – Blixt

+0

좋아요, http://www.codinghorror.com/blog/archives/000488.html을 읽은 후에는 regexp 엔진이 실제로 그룹을 지원하기 위해 백 트랙킹을 사용하고있는 것처럼 보입니다. 내 오해의 소지가있는 게시물을 유감스럽게 생각합니다. – Bluehorn

+0

그래, 그게 바로 내가 피하려고 노력하는거야 =) – Blixt

2

그것은 RegexBuddy로하지 꽤 강력하지만 간단한 온라인 인터페이스입니다 : http://www.gskinner.com/RegExr/

당신은 당신의 표현의 마우스 오버 부품 수와 그것이 무엇을하고 있는지 알려줍니다. 아주 기본이지만, 당신이 바보 같은 짓을 할 때 시간을 절약 할 수 있습니다.

4
펄에서

당신은 단지 use re 'debug'; 또는 use re 'debugcolor';

예를 들어, 당신은 펄이 점을 입력 항상 수 경우 :

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))" 

(참고 :

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))/; 

이것은 당신이 나가 무엇인가 : 출력의 일부분을 변경하여 더욱 선명하게 표시)

1

Debuggex에는 내가 본 그래픽 방식이 있습니다. 기본적으로 DFA 다이어그램이 정규 표현식에 대해 어떻게 보이는지, 일치하는 항목에 대한 기본 강조 표시가 있는지, 하단에 일치 항목 및 DFA 다이어그램을 단계별로 안내 할 수있는 슬라이더가 있는지 보여줍니다.

enter image description here

관련 문제