gpt4 book ai didi

regex - 如何从正则表达式电子邮件模式中排除图像?

转载 作者:行者123 更新时间:2023-12-01 22:26:31 25 4
gpt4 key购买 nike

我正在使用从https://emailregex.com找到的正则表达式:\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b

但是,它将导致诸如 175x100@3x.jpg 之类的图像被计为电子邮件。

我进行了一些搜索,发现可以利用否定的前瞻性,但是GoLang regexp软件包不提供此功能。有没有其他我可以使用的正则表达式模式?

最佳答案

您可以匹配要忽略的任何扩展名,然后匹配并捕获TLD模式。如果组1值不为空,则进行匹配,否则将其丢弃:

package main

import (
"fmt"
"regexp"
)

func main() {
s := ` 175x100@3x.jpg and 175x100@3x.com`
rex := regexp.MustCompile(`\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.(?:jpe?g|([A-Za-z]{2,6}))\b`)
results := rex.FindAllStringSubmatch(s, -1)
for _, match := range results {
if len(match[1]) > 0 {
fmt.Printf("%q\n", match[0])
}
}
}

参见 Go demo online。输出: 175x100@3x.com

在这里, (?:jpe?g|([A-Za-z]{2,6}))模式匹配 jpgjpeg,并将任意两到六个ASCII字母匹配并捕获到组1中。 if len(match[1]) > 0 { fmt.Printf("%q\n", match[0]) }部分仅在第1组匹配时打印匹配项。

关于regex - 如何从正则表达式电子邮件模式中排除图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59698774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com