2012-06-11 6 views
1

Pls는 다음 DFA http://i.stack.imgur.com/iH3RM.png

이 JFLAP 통해 생성 된 참조 스칼라에 jflap 정규식을 사용하려고합니다. 내가 정규식으로 변환 할 때, JFLAP을 제공합니다

p+(q+pq)(pq)*(λ+p) 

내가 스칼라 REPL에 붙여 넣을 때 :

scala> val regex = "p+(q+pq)(pq)*(+p)".r 
    java.util.regex.PatternSyntaxException: Dangling meta character '+' near index 14 
    p+(q+pq)(pq)*(+p) 
       ^
     at java.util.regex.Pattern.error(Unknown Source) 

나는 두 가지 간단한 질문이 있습니다.

  1. 올바른 정규식인가요? 왜 λ를 포함합니까?

  2. repl에 붙여 넣을 때 λ가 올바르게 표시되지 않으므로 어떻게 스칼라에서 사용합니까?

답변

1

공식 정규 표현식 표기로 +은 "또는"을 의미합니다. 당신이 사용하고자하는 정규 표현식은 다음과 같습니다 :

p|(q|pq)(pq)*p? 
+0

와우 감사합니다. 나는 +를 |로 대체하려고 시도했으며, 아래는 완벽하게 작동합니다. (p | pq) * (| p) .r regex : scala.util.matching.Regex = p | (q | pq) * (| p) scala> val regex = "p | –