赞
踩
正则表达式中的前瞻和后顾。
前瞻(Lookahead)
前瞻是一种断言,它会检查在当前位置之后是否存在某种模式,但不会实际匹配该模式。前瞻有两种形式:
正向前瞻 (?=pattern)
\w+(?=\d)
将匹配后面跟数字的单词,如 “apple42”、“hello123”负向前瞻 (?!pattern)
\w+(?!\d)
将匹配后面不跟数字的单词,如 “apple”、“hello”后顾(Lookbehind)
后顾是一种断言,它会检查在当前位置之前是否存在某种模式,但不会实际匹配该模式。后顾有两种形式:
正向后顾 (?<=pattern)
(?<=\$)\d+
将匹配美元符号后面的数字,如 “$42”、“$100”负向后顾 (?<!pattern)
(?<!\$)\d+
将匹配不在美元符号后面的数字,如 “42”、“100”下面是一些示例,帮助你更好地理解前瞻和后顾的使用:
匹配以"http://"或"https://"开头的 URL:
(?:http|https)://\S+
匹配以"www."开头的域名:
(?:www\.)\S+\.\w+
匹配带有"@"符号的电子邮件地址,但不包括以"admin@"开头的:
\b(?!admin@)\S+@\S+\.\w+\b
匹配以"$“开头的数字,但不包括以”$0"开头的:
(?<=\$)(?!0)\d+
前瞻示例
匹配以"www."开头的域名,但不包括以"www.example.com"结尾的:
(?=^www\.\S+$)(?!^www\.example\.com$)\S+
匹配包含"http://"或"https://"的 URL,但不包括以"http://example.com"或"https://example.com"开头的:
(?=^https?:\/\/\S+$)(?!^https?:\/\/example\.com\S*$)\S+
匹配以"admin_"开头的用户名,但不包括以"admin_root"结尾的:
(?=^admin_\S+$)(?!^admin_root$)\S+
后顾示例
匹配以" " 结尾的数字 , 但不包括以 " "结尾的数字,但不包括以" "结尾的数字,但不包括以"$"开头的:
(?<!\$)\d+\$
匹配以".“结尾的文件名,但不包括以”.txt"结尾的:
(?<!\.[tT][xX][tT]$)\.\w+$
匹配以"admin:"开头的行,但不包括以"root:admin:"开头的:
(?<!^root:)^admin:\S+
这些示例展示了前瞻和后顾在各种场景下的应用,包括匹配 URL、用户名、文件名以及文本行等。通过这些示例,相信你对正则表达式中的前瞻和后顾有了更深入的理解。
这个AI工具超好用,每天都有免费额度,写文章、总结长视频、画图等,都几秒搞定!快去下载Sider Chrome或Edge插件,薅羊毛!
https://sider.ai/invited?c=2b94a5fccc7ce8fad5a89d3967577451
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。