正则表达式前瞻,后瞻和原子组
我发现这些东西在我的正则表达式的身体,但我没有一个线索,我可以使用它们。
有人有例子,所以我可以尝试了解它们如何工作吗? (?!) - 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_1确保字符串的长度确实为4,但不消耗任何字符,以便搜索REGEX_2在同一位置开始。现在REGEX_2确保字符串匹配一些其他规则。没有前瞻,它将匹配长度为三或五的字符串。 >负面前瞻 句法: (?!REGEX_1)REGEX_2 仅当REGEX_1不匹配时匹配;在检查REGEX_1之后,搜索REGEX_2在相同位置开始。 例: (?!.*bFWORDb)w{10,30}$ 前瞻部分检查字符串中的FWORD,如果找到则失败。如果没有找到FWORD,则前瞻成功,并且以下部分验证字符串的长度在10和30之间,并且它只包含字符字符a-zA-Z0-9_ Look-behind与look-ahead类似:它只是在当前光标位置的后面。一些正则表达式风格像javascript不支持后瞻断言。支持它的大多数风格(PHP,Python等)要求后备部分具有固定长度。 >原子组基本上丢弃/忘记组中的后续令牌,一旦令牌匹配。检查此页面的例子atomic groups (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |