Url正则表达式调整为只捕获Url而不是ip



我制作了这个正则表达式来捕获所有类型的url(它实际上捕获了所有url(,但它也捕获了单个ip

这是我的场景:我有一个充满IP、Hash和url的列表,我的url regex和IP regex都捕获了相同的条目。我不知道单个ip是否可以被认为是";url";。

我的正则表达式:((http|https)://)?(www)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,9}b([-a-zA-Z0-9()@:%_|+.~#?&//={};,[]'"$x60]*)?

捕获所有这些:

http://127.0.0.1/
http://127.0.0.1
https://127.0.0.1/m=weblogin/loginform238,363,771,89816356,2167
127.0.0.1:8080 ------> excluding this one is okay too (optional)
127.0.0.1 ------> i want to exclude this one
google.com
google.com:80
www.google.com
https://google.com
https://www.google.com

我希望我的正则表达式捕获所有的url,除了像这样的单个ip:

127.0.0.1
  • 注意:我想在golang代码中使用它(使用golangregex引擎(
  • 注意:我使用的是regexp.Compile()FindAllString函数

在regex101 上尝试此regex

您可以使用正则表达式来实现;有史以来最好的把戏";使用FindAllStringSubmatch:匹配需要跳过/省略的内容,并匹配和捕获需要保留的内容。

b(?:https?://)?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b(?:[^:]|$)|((?:https?://)?(?:www)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,9}b[-a-zA-Z0-9()@:%_|+.~#?&//={};,[]'"$x60]*)

第一种选择是IP匹配正则表达式,其中我添加了(?:https?://)?部分以匹配可选的协议部分,并添加了(?:[^:]|$)部分以确保在IP模式之后立即有除:之外的字符或字符串结尾,但您可以进一步调整此部分。

然后,像一样在Go中使用它

package main
import (
"fmt"
"regexp"
)
func main() {
r := regexp.MustCompile(`b(?:https?://)?(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)b(?:[^:]|$)|((?:https?://)?(?:www)?[-a-zA-Z0-9@:%._+~#=]{1,256}.[a-zA-Z0-9()]{1,9}b[-a-zA-Z0-9()@:%_|+.~#?&//={};,[]'"$x60]*)`)
matches := r.FindAllStringSubmatch(`http://127.0.0.1/
http://127.0.0.1
http://www.127.0.0.1/m=weblogin/loginform238,363,771,89816356,2167
127.0.0.1:8080
127.0.0.1
google.com
google.com:80
www.google.com
https://google.com
https://www.google.com`, -1)
for _, v := range matches {
if (len(v[1]) > 0) {       // if Group 1 matched
fmt.Println(v[1])          // Display it, else do nothing
}
}   
}

输出:

http://www.127.0.0.1/m=weblogin/loginform238,363,771,89816356,2167
127.0.0.1:8080
google.com
google.com:80
www.google.com
https://google.com
https://www.google.com

相关内容

  • 没有找到相关文章

最新更新