试图在scala中使用jflap正则表达式

时间:2012-06-11 21:45:55

标签: regex scala jflap

请参阅以下DFA http://i.stack.imgur.com/iH3RM.png

通过JFLAP创建。当我转换为正则表达式时,JFLAP给出:

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

当我将其粘贴到Scala 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 个答案:

答案 0 :(得分:1)

在正式正则表达式中,符号+表示“或”。你想要使用的正则表达式是这样的:

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