本文目录
详解正则表达式与 NFA 的转换
NFA 是 Non-deterministic Finite state Automata 的缩写。所以先理解 NFA 之前我们先理解 DFA,也就是 deterministic Finite state Automata。
通俗的说, DFA 就是一系列状态的合集 ,关键词是 状态 !
我们先写一个关于灯泡的 DFA:
(两个圈是终态,我们把「灯泡关闭」的状态当做终态)
简单来说,NFA 就是存在着不确定状态转换的 DFA。
我们还拿灯泡的例子:
(灯泡打开的时候还有可能会坏掉)
先列出三种基本正则表达式的 NFA 图:
表示 A 与 B 的连接,NFA 图如下:
我们来画一个复杂的正则表达式与 NFA 的转换
1)首先把 a 看成 A,把 (b|c)* 看成 B就有:
2)再拆解 (b|c)*
3)最后拆解 b|c
好!我们继续学习编译原理!
正则表达式.*(.)(.*\\1).是什么意思
.*(.)(.*\\1).第1个 . 代表任意字符,后面的 * 代表 前面的任意字符有0个或多个第2个 . 也代表任意字符,但它被括号括起来了,括号代表它被捕获了,相当于被复制了,还没被粘贴第3个 . 也代表任意字符,后面的 * 代表 前面的任意字符有0个或多个\\第1个\代表转译符,\这个符号不能直接出现在表达式里,必须被\转译符后才能变成一个普通的字符\,也就是说第1个\是用来把第2个\变成一个普通字符\1就是1,没什么好说的最后1个 . 也是代表任意字符,它后面没跟着 * ,所以代表只有1个任意字符 顺便说下,最短能被匹配的结果1\111随便换成别的任意字符也行
正则表达式 求讲解
关键词解释:^匹配字符串的开始,$字符串的末尾匹配,?表示0或1,+表示一个或多个中,*表示任意数字。代表任意字符(除换行符\ n)时,\ d表示任意一个数字,\ w表示任意数字,字母或下划线,\ s匹配任何空白字符, \ S匹配任何非空白字符,指出,除》之外的任何字符 \表示转义字符,如。表达了特殊的意义,如果你想匹配其使用\。 其他问题的优先次序,其他运营商都看到呻/ msdn.microsoft.com/zh-cn/library/ae5bf541 (V = VS.100)。 ASPX 1 ^匹配字符串的开头。 - ?表示0或 - ,这一下可分为四个部分(3 |最低优先级)。 \ D * \ \ D *匹配的非浮动,如11.11 0 \ 0不可分割的一部分。 \ D * \ D *匹配的整数部分是零,一些非零浮动的树木,如0.111 0? \ .0 +匹配的整数部分是零或空白,整个的小数部分为0,且至少有一个0,如)0.0,.000 最后| 0后面的比赛0 (貌似还? 2失踪了类似的情况.1234),这是本场比赛的邮件地址\ w +( \ w +)*表示字符串的字母或下划线,后面可能含有 - 。 +三位人物, @ @直的比赛,之后\ w +( \ W +)。 *匹配像163.com 3串。 \ U表示unicode编码,4E00-9fa5是一个字符编码 4。匹配配对标签两种形式 DEF 或,其中\ 1表示相同的表达式字符串的第一个孩子比赛,第一子表达式是(\ S *?)匹配字符串,不包含空格
正则表达式<[^>]*>| |\[[0-9]\]|\s* 是什么意思求详解
《|\s* 解释:正则表达式中,符号 | 表示“或者”关系此正则有三个 | 符号,被分成了4部分,表示匹配这四者任意一个 第一部分:《*》《 # 匹配《* # 匹配所有非》的字符,星号*表示任意数量》 # 匹配》综上所述,这里匹配类似html标签《xxx》这样的文本 第二部分:| | #匹配空格 第三部分:\\综上,这里匹配类似 这样被中括号括起来的数字 第四部分:\s* # 匹配空格,回车,制表符……等空白文本,星号*表示任意数量