1

请参阅以下 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 时 λ 没有正确显示?

4

1 回答 1

1

在正式的正则表达式中,符号+表示“或”。您要使用的正则表达式类似于:

p|(q|pq)(pq)*p?
于 2012-06-11T21:52:47.997 回答