25、正则表达式:全面解析与应用

正则表达式:全面解析与应用

1. 输入消耗机制

在理解正则表达式时,一种简单的看法是将其视为“在大字符串中查找子字符串”的工具,就像在干草堆里找针一样。但这种简单的概念会限制我们对正则表达式本质的理解,以及利用它完成更强大任务的能力。

更深入的理解是,正则表达式是用于消耗输入字符串的模式,匹配结果只是这种处理方式的副产品。为了更好地理解正则表达式的工作原理,我们可以借助一个常见的儿童单词游戏来类比。在这个游戏里,有一个字母网格,我们要从中找出单词。这里我们只考虑第一行:

X J A N L I O N A T U R E J X E E L N P

人类在这个游戏中表现出色,能很快找出“LION”、“NATURE”和“EEL”(还有“ION”)。但计算机和正则表达式就没那么聪明了。

我们让正则表达式去查找“LION”、“ION”、“NATURE”和“EEL”。正则表达式从第一个字符“X”开始,发现要找的单词都不以“X”开头,就判定“不匹配”,然后移动到下一个字符“J”,同样不匹配,再到“A”。在这个过程中,正则表达式经过的字符被视为已消耗。直到遇到“L”,它认为可能匹配“LION”,所以不消耗“L”。接着依次匹配“I”、“O”、“N”,最终识别出匹配成功,此时“L”、“I”、“O”、“N”被消耗。

这里有趣的是,“LION”和“NATURE”有重叠部分。人类对此不会有困扰,但正则表达式不会回头去查看已消耗的字符,所以它找不到“NATURE”,因为“N”已经被消耗,只能找到“ATURE”,这不是它要找的单词。不过,它最终能找到“EEL”。

如果把“LION”中的“O”换成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值