栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

前瞻性和非捕获正则表达式

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

前瞻性和非捕获正则表达式

您会混淆非捕获组

(?:...)
和超前断言
(?=...)

前者确实参加了比赛(因此其中一部分

match.group()
包含了整体比赛),他们只是不生成反向引用(
$1
等以备后用)。

第二个问题(为什么双点匹配?)比较棘手。这是由于您的正则表达式错误。你看,当你写的时候(简明扼要)

[+-/]

您写了“在

+
和之间匹配一个字符
/
,并且在ASCII中,点在它们之间(ASCII
43-47:)
+,-./
。因此,第一个字符类与该点匹配,并且永远不会达到先行断言。您需要放置字符类末尾的破折号将其视为文字破折号:

((w         # alphanumeric and _| [!#$%&'*+/=?^_`{|}~-]          # special chars, but no dot at beginning)(w         # alphanumeric and _| [!#$%&'*+/=?^_`{|}~-]          # special characters| ([.](?![.])) # negative lookahead to avoid pairs of dots. )*)(?<!.)(?=@)# no end with dot before @

当然,如果您想使用此逻辑,可以对其进行简化:

^(?!.)        # no dot at the beginning(?:[w!#$%&'*+/=?^_`{|}~-]   # alnums or special characters except dot| (.(?![.@])) # or dot unless it's before a dot or @ )*(?=@)          # end before @


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/659801.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号