为实数的正则表达式创建DFA?

时间:2018-02-05 18:25:56

标签: regex dfa

我试图构建实数的定有限自动机(DFA),定义为:

  • 带有可选' +'的字符串。或' - '。
  • 后跟一个零或非空数字序列,不以零开头。
  • 后跟小数点。
  • 后面跟着一个非空的数字序列

如果真实与否,它的完成取决于数字。

我构造了正则表达式:/[+ | -]?(O | ([1-9][0-9]*)).[0-9]+/

2 个答案:

答案 0 :(得分:0)

See regex in use here

^[+-]?(?:0|[1-9]\d*)(?:\.\d+)?$
  • ^在行首处断言位置
  • [+-]?可选择匹配+-
  • (?:0|[1-9]\d*)匹配0或以1-9范围内的数字开头的数字,后跟任意数字的任意数字
  • (?:\.\d+)?可选择匹配小数点数(点.,后跟一个或多个数字)
  • $断言行尾的位置

答案 1 :(得分:0)

DFA

此处,开始状态为q5

最终状态为q1

如果提供了签名,则DFA会进入州q2

如果第一个数字为0,则到达状态q3

状态q4如果第一个数字不为0,则保持该状态以获得更多数字,直到看到小数点。

如果看到一个数字,则状态q5从转换到状态python3 -m venv ~/.virtualenv/miniprojects的小数点到达。

未显示死亡状态。