Попытка использовать регулярное выражение jflap в Scala

Просьба посмотреть следующие DFA

создан с помощью 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 ответ

Решение

В формальных регулярных выражениях + означает "или". Регулярное выражение, которое вы хотите использовать, выглядит примерно так:

p|(q|pq)(pq)*p?
Другие вопросы по тегам