2012-06-11 161 views
1

請參見下面的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. 如何在Scala中使用它,因爲當我粘貼到repl中時λ不能正確顯示?

回答

1

正式正則表達式符號+表示「或」。您要使用的正則表達式是這樣的:

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

哇謝謝你。我嘗試用|替換+,並且下面的作品完美。 (pq)*(| p)「。正則表達式:scala.util.matching.Regex = p |(q | pq)(pq)*(| p) –