正则表达式前瞻,后瞻和原子组

我发现这些东西在我的正则表达式的身体,但我没有一个线索,我可以使用它们。
有人有例子,所以我可以尝试了解它们如何工作吗?
(?!) - negative lookahead
(?=) - positive lookahead
(?<=) - positive lookbehind
(?<!) - negative lookbehind

(?>) - atomic group
回环是零宽度断言。他们检查正则表达式(向前或向左的当前位置 – 基于前面或后面),成功或失败,当找到匹配(基于它是正面还是负面),并丢弃匹配的部分。它们不消耗任何字符 – 跟随它们的正则表达式(如果有的话)的匹配将在相同的光标位置开始。

有关详细信息,请参阅regular-expression.info

>积极前瞻:

句法:

(?=REGEX_1)REGEX_2

仅当REGEX_1匹配时匹配;在匹配REGEX_1之后,匹配被丢弃,并且搜索REGEX_2在相同位置开始。

例:

(?=[a-z0-9]{4}$)[a-z]{1,2}[0-9]{2,3}

REGEX_1是[a-z0-9] {4} $,它匹配四个字母数字字符,后跟行尾。
REGEX_2是[a-z] {1,2} [0-9] {2,3},它匹配一个或两个字母,后跟两个或三个数字。

REGEX_1确保字符串的长度确实为4,但不消耗任何字符,以便搜索REGEX_2在同一位置开始。现在REGEX_2确保字符串匹配一些其他规则。没有前瞻,它将匹配长度为三或五的字符串。

>负面前瞻

句法:

(?!REGEX_1)REGEX_2

仅当REGEX_1不匹配时匹配;在检查REGEX_1之后,搜索REGEX_2在相同位置开始。

例:

(?!.*\bFWORD\b)\w{10,30}$

前瞻部分检查字符串中的FWORD,如果找到则失败。如果没有找到FWORD,则前瞻成功,并且以下部分验证字符串的长度在10和30之间,并且它只包含字符字符a-zA-Z0-9_

Look-behind与look-ahead类似:它只是在当前光标位置的后面。一些正则表达式风格像javascript不支持后瞻断言。支持它的大多数风格(PHP,Python等)要求后备部分具有固定长度。

>原子组基本上丢弃/忘记组中的后续令牌,一旦令牌匹配。检查此页面的例子atomic groups

相关文章

正则替换html代码中img标签的src值在开发富文本信息在移动端...
正则表达式
AWK是一种处理文本文件的语言,是一个强大的文件分析工具。它...
正则表达式是特殊的字符序列,利用事先定义好的特定字符以及...
Python界一名小学生,热心分享编程学习。
收集整理每周优质开发者内容,包括、、等方面。每周五定期发...