Regex 如何定义“一个”呢;“语言”;使用正则表达式?
我想用正则表达式定义“某种语言”。这些要求是:Regex 如何定义“一个”呢;“语言”;使用正则表达式?,regex,math,Regex,Math,我想用正则表达式定义“某种语言”。这些要求是: 语言必须包含无限多的字符串 基础字母表必须至少有三个不同的字符 我还需要画一个接受该语言字符串的确定性有限状态自动机 给出有限状态自动机接受的两个字符串和不接受的两个字符串 鉴于这一系列要求,到目前为止(基于我对集合论及其相关数学的20年记忆),我提出了以下建议,并希望集合论、正则表达式和形式语言定义专家提供一些意见(我知道你们中有许多人对这门学科有着浓厚的既得利益) 以下内容是否至少接近于实现(1)和(2)?(4)实际上意味着什么?例如,根据要求
∑ = {s,a,e,t,n}
语言:
L* = { Ø , ∈ , taste, set, ate, sane, ….}
或(使用正则表达式)
有人要吗
谢谢。首先,正则表达式
[saetn]*
将接受您选择的字母表上的所有字符串,因此您将无法找到两个不在该语言中的字符串(该语言为L=∑*
),并且无法满足要求(4)
不是有效的语言,因为语言不能包含Ø
。空集不是字符串(语言是一组字符串,而不是一组集合)。让我们删除Ø
L = { ε , taste, set, ate, sane, ...}
L = { ε , taste, set, ate, sane }
以下内容是否至少接近于实现(1)和(2)
它不满足(1),因为没有合理的模式使…
具有任何意义。语言看起来是有限的
L = { ε , taste, set, ate, sane }
将是一种有效的有限语言,其中ε
表示空字符串。所有有限语言都是正则的,因为您可以创建一个表达式,该表达式是该语言中所有字符串的或
(| taste | set | ate | sane
)
当您选择字母表∑ = {s,a,e,t,n}
,它有5个元素
L = { ε , taste, set, ate, sane }
(4)实际上意味着什么
这意味着语言不能包含字母表中的所有字符串。∑*
中必须至少有两个字符串不在该语言中,并且必须显示它们是什么。这并不妨碍语言的无限性
无限语言的一个例子是:
L = { ε, s, a, t, ss, aa, tt, sss, aaa, ttt, ssss, ... }
该语言(在字母表{s,a,t}
上)包含不超过一个不同字符的所有字符串。接受这种语言的正则表达式是s*| a*| t*
。语言显然是无限的,任何包含两个不同符号的字符串,如at
或sat
都不在语言中。该语言满足所有要求。还有许多其他语言可以满足所有要求
我将把DFA的图纸留给你。如果您对此有任何疑问,请随时对我的答案发表评论。
[saetn]*
表示“[]中的任何字符为零或更多”。换句话说,你的正则表达式将允许ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss。我今天处于学习模式。请随时为该错误提供正确的解决方案。好吧,只允许您在其中的单词(taste | set | ate | sane)*
。“零或更多的(味道、设置、吃或理智)”啊哈!谢谢你!我现在想知道如何将集合限制在这些词上,才能与(1)中的“无限字符串”要求相适应……这个问题似乎是离题的,因为它是关于理论计算机科学,而不是编程。它应该去感谢你保尔专业!!很好,我的直觉引导我专注于单个字符/字母,而不是单词,因为这不会促进基于字符/字母集的无限阅读。太感谢你了!我从90年代初就没有做过这些,甚至不再编写(C++)程序。所以,非常生锈。教授冥想和瑜伽,对我的智力/认知过程也不是好兆头。我用JFLAP做DFA。期待它!:)**非常感谢你。。保普!喜欢你在我的方法中隔离所有问题并提出解决方案的方式。惊人的天才!