查找正则表达式的补集

2024-01-28

我的练习单上有一道题是求两个公式的补集

(1) (aa|bb)*

and

(2) (a|b)(aa|bb)(a|b).

我认为两者是互补的a* | b*,仅表示a的或仅b's?


您需要完成通常的程序:

  • 将正则表达式转换为 NFA。
  • 将 NFA 转换为 DFA。对于简单的情况,很容易直接从正则表达式(手动)转换为 DFA。
  • 将所有非终止状态转换为终止状态,反之亦然。
  • 将补充 DFA 转换为正则表达式。这是此类转换的一个详细示例 https://stackoverflow.com/questions/13676431/regular-expressions-with-repeated-characters/13677120#13677120

我不会向你展示结果,因为它是练习,但我会向你展示第一个公式的 DFA(aa|bb)*:

从这里你可以清楚地看出a* or b*不会给出正确的结果。你永远不会最终陷入Trap状态(成为补充正则表达式中的终止状态),并且您可能最终处于状态2a/2b(这变成non- 补充正则表达式中的终止状态)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找正则表达式的补集 的相关文章

  • 用户名的正则表达式?

    我正在使用 C 和 jQuery 通过正则表达式验证用户名 刚刚学习 到目前为止我已经 UserName a zA Z0 9 但这并不能阻止符号 如何保证没有符号或者 或者 Thanks 该正则表达式表示 至少一个字母或数字 您想要 从开始
  • 如何使用 R 提取包含特定人名的句子

    我正在使用 R 来提取包含特定人名的句子来自文本 这是一个示例段落 在蒂宾根 他作为改革家遭到反对 但在他的叔公约翰 罗伊克林的推荐下 他接受了马丁 路德的召唤 进入维滕贝格大学 梅兰希顿 21 岁时成为维滕贝格的希腊语教授 他研究圣经 尤
  • 为什么空 python 正则表达式搜索的返回值是匹配的?

    将空字符串传递给正则表达式对象时 搜索结果是匹配对象而不是 None 因为没有任何东西可以匹配 所以它应该是 None 吗 import re m re search some text if m is None print Returne
  • 如何使用正则表达式作为字符串标记器的分隔符

    我想检索之间的字符串 2 and 使这项工作有效的正则表达式序列是什么 据说我有 2 21381030213jafjs231 adfafafasdfas我正在使用 StringTokenizer test new StringTokeniz
  • 将 Eclipse 的“开放调用层次结构”过滤为仅我的公司/项目

    我最喜欢的 Eclipse 功能之一是能够打开调用者 被调用者层次结构 http eclipse tools sourceforge net call hierarchy index html的一个方法 默认情况下 该视图显示对我的代码库之
  • 在 JavaScript 中查找文本字符串

    我有一个很大的有效 JavaScript 文件 utf 8 我需要从中自动提取所有文本字符串 为简单起见 该文件不包含任何注释块 仅包含有效的 ES6 JavaScript 代码 一旦我发现发生 or 或 我应该扫描文本块的末尾 这是我陷入
  • 如何在 Objective-C 中使用正则表达式验证 IP 地址?

    如何在 Objective C 中验证 IP 地址 这是一个使用现代 inet pton 的类别 它将针对有效的 IPv4 或 IPv6 字符串返回 YES include
  • 带变量的 ansible regex_search

    如何在ansible playbook中使用正则表达式查找匹配项 其中变量出现在regex search争论 以下剧本在使用以下命令运行时找不到匹配项 ansible playbook playbook yml hosts localhos
  • 瑞典 SSN 正则表达式拒绝特定年龄以下的用户

    我的正则表达式有问题 我已经可以验证正确的瑞典社会安全号码以符合这些标准 YYMMDDNNNN 年月日 NNNN 年年月日DDNNNN YYYYMMDD NNNN 但如果用户未满 18 岁 我也想拒绝该用户注册 我的常规表达现在是这样的 有
  • 更改grep命令的分隔符

    我在用grep检测 a href xxxx something here a 当链接在输入中分成两行时 这不起作用 我想 grep 检查直到它检测到但现在它只是将输入输入到 grep 中 直到检测到新行为止 所以如果输入是这样的 a hre
  • 如何根据条件分割字符串

    分割字符串时 如何确保如果分隔符位于两个字符之间 则不会被考虑 Input String string a b c d e String split string split Output split 0 a split 1 b split
  • 匹配嵌套的html注释块正则表达式[重复]

    这个问题在这里已经有答案了 我有这个 html 代码块 some html content here top base some html content here 1 top some html content here 2 top so
  • Java正则表达式匹配除

    匹配除特定字符之外的所有字符的正确语法是什么 例如我想匹配除字母之外的所有内容 A Z a z 和数字 0 9 I have string matches A Z a z 0 9 这是不正确的吗 是的 你不需要嵌套 像那样 使用这个代替 A
  • 正则表达式:将单词与侵入性符号相匹配

    我试图将所有 单词 与侵入性星号相匹配 包括开头和结尾 但没有其他标点符号 例如 我期待下面的七场比赛 相反 我得到了两个 text star tar s ar st r sta tar sta sta p re compile r b w
  • 英国日期正则表达式[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个验证英国日期格式的正则表达式 我有以下内容 0 1 9 12 0 9 3 01 0 1 9 1 012 19 20 d d 这对于验证非常有用 09 12 2011 但如果日期是 9 12 20
  • 包含多个双引号的 CSV 拆分正则表达式

    我有一个包含文本的 CSV 列数据 每行用双引号分隔 一行中的示例文本类似于此 notice 新行和每行之前的空格是故意的 Lorem ipsum dolor sit amet consectetur adipisicing elit se
  • 在R中使用grepl完成单词匹配

    考虑以下示例 gt testLines lt c I don t want to match this This is what I want to match gt grepl is testLines gt 1 TRUE TRUE 不过
  • 值范围为 1 - 365 的正则表达式

    值范围为 1 365 的正则表达式是什么 尝试这个 1 9 d 12 d 2 3 0 5 d 36 0 5 起始锚点 和端锚 是匹配整个输入和 不仅仅是其中的一部分 是为了分组 是为了交替 1 9 d 火柴1 to 99 12 d 2 火柴
  • java中使用[:punct:]函数的正则表达式

    我在用 punct 替换 a 中特殊字符的函数 字符串例如 REPLACE REGEXP REPLACE 第 1 列 punct 作为输出 作为java中SQL字符串的一部分 但我想要特定的特殊字符 不被替换 你能建议最好的方法吗 Acc
  • 如何识别 Antlr 语法中的行首?

    在我使用的语言中 某些关键字必须位于行的开头 这主要是因为语言中的字符串值可以跨越多行 并且字符串可以轻松包含这些关键字 我可以轻松处理旧的 yacc lex 语法实现 因为词法分析器使用普通的正则表达式来匹配文本模式 例如 descrip

随机推荐