1

plsは次の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)

簡単な質問が2つあります。

  1. それは正しい正規表現ですか?なぜλが含まれているのですか?

  2. replに貼り付けるとλが正しく表示されないので、Scalaでどのように使用しますか?

4

1 に答える 1

1

正式な正規表現では、表記+は「または」を意味します。使用する正規表現は次のようなものです。

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