首页技术正则表达式通俗理解,正则表达式含义

正则表达式通俗理解,正则表达式含义

编程之家2026-07-03923次浏览

这篇文章给大家聊聊关于正则表达式通俗理解,以及正则表达式含义对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

正则表达式通俗理解,正则表达式含义

详解正则表达式与 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

好!我们继续学习编译原理!

perl正则表达式中的模式分组疑问

这是perl里模式分组的概念,如果不是很懂,可以找下小骆驼版的看下,里面说的很清楚。

对于perl:

在正则表达式中,小括号()的作用是对字符串分组,其出现的地方一般会触发正则表达式引擎捕获匹配到的字符串,然后捕获组会的把匹配小括号中模式的字符串保存到相应的地方。第一个()内所找到的字符串保存到$1和\1变量;第n个()内所找到的字符串保存到$n和\n变量中。

$x与\x的区别是:\x反向引用的是模式匹配期间得到的结果,即只有在模式匹配期间能使用;

而$x则是模式匹配结束后对得到的捕获内容的索引,即到下次出现正确匹配前,这个变量的内容会一直存在

对于你的例子”/(.)\1/

是.匹配一个字符,然后用()括起来,是把这个匹配的字符放在捕获变量1中,这样就可以用\1或$1来引用这个匹配的字符。所以/(.)\1/就是匹配二个连续的且相同的字符,就是你说的,再重复一次的意思。

关于正则表达式通俗理解到此分享完毕,希望能帮助到您。

十大常见web漏洞 web漏洞40大漏洞if函数查找包含某文字 if包含某个文字则取值