正则表达式的意思是什么?

前端之家收集整理的这篇文章主要介绍了正则表达式的意思是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
正则表达式中的加号是什么意思?
实际上可以有两个含义,具体取决于上下文.

像上面提到的其他答案一样,通常是一个repetition操作符,并使上一个令牌重复一次或多次. a将在formal language theory表示为aa *,也可以表示为{1,}(最少1次,最大无限次).

然而,如果遵循重复运算符(即,?,*或{m,n}),也可以使其他量词possessive.占有量词是一些正则表达式(PCRE,Java和JGsoft引擎)的高级功能,它告诉引擎一旦进行匹配就不会回溯.

为了理解它是如何工作的,我们需要了解正则表达式引擎的两个概念:贪婪和回溯.贪婪意味着一般来说,正则表达式将尽可能地消耗尽可能多的字符.假设我们的模式是*(dot是正则表达式的特殊构造,意思是任何character1;星号意味着匹配零次或更多次),您的目标是aaaaaaaab.整个字符串将被消耗,因为整个字符串是满足模式的最长匹配.

不过,假设我们将模式改为.* b.现在,当正则表达式引擎尝试匹配aaaaaaaab时,*将再次使用整个字符串.然而,由于引擎将已经到达字符串的末尾,并且模式尚未满足(除了模式仍然必须匹配b之外的所有消费),它将一次返回一个字符,并尝试比赛b.第一个回溯将使*消耗aaaaaaaa,然后b可以消耗b,并且模式成功.

有限的量词也是贪心的,但如上所述,一旦他们返回比赛,发动机就不能再追溯到那一点了.所以如果我们将模式改为.* b(匹配任何字符零次或多次,占有率,后跟ab),并尝试匹配aaaaaaaab,再次.*将消耗整个字符串,但是由于它是占有性,回溯信息被丢弃,b不能匹配,因此模式失败.

1在大多数引擎中,除非指定了/ s(“singleline”或“dotall”)modifier,否则该点与换行符不匹配.

原文链接:https://www.f2er.com/regex/357123.html

猜你在找的正则表达式相关文章