在文本文件中,有一个字符串编码与http相关的信息。以下是字符串示例
URL 123.34.45.7:http://captive.apple.com/hotspot-detect.html
或
URL 123.45.67.8:http://www.google-analytics.com/r/collect?v=1&_v=j41&a=1071188231&t=pageview&_s=1&dl=http%3A%2F%2Fm.sherdog.com%2F&ul=en-us&de=UTF-8&dt=Sherdog.com%3A%20UFC%2C%20Mixed%20Martial%20Arts%20(MMA)%20News%2C%20Results%2C%20Fighting&sd=32-bit&sr=320x480&vp=320x460&je=0&_utma=236548035.1293902652.1385044241.1442
我写了一些正则表达式来提取部分直到http,例如
url)\\s\\d+[.]\\d+[.]\\d+[.]\\d+[:](http|https|ftp)
但我不确定如何编写正则表达式以匹配http
之后的部分。感谢。
答案 0 :(得分:0)
尝试以下正则表达式:
/^(URL[^:]+:)(?:.*?\/\/)(.*)/gm
演示:
var re = /^(URL[^:]+:)(?:.*?\/\/)(.*)/gm;
var str = 'URL 123.34.45.7:http://captive.apple.com/hotspot-detect.html';
var m;
while ((m = re.exec(str)) !== null) {
console.log(m[1]+m[2]);
}
它将打印:
URL 123.34.45.7:captive.apple.com/hotspot-detect.html
答案 1 :(得分:0)
用于查找类型" URL [IP ADDRESS]:[URL]"在给定(可能很大)的字符串中,试试这个:
var patterns = {
ip: '\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}',
url: (() => {
var protocol = '(http(s)?(:\/\/))?(www\.)?';
var domains = '[a-zA-Z0-9-_\.]+';
var params = '([-a-zA-Z0-9:%_\+.~#?&//=]*)';
return protocol + domains + params;
})()
}
var regex = new RegExp(`URL ${patterns.ip}:${patterns.url}`);
看看这个小提琴:enter link description here
答案 2 :(得分:0)
.*
会随时匹配任何字符。
因此,如果您将其添加到字符串的末尾,您将获得:
url\s\d+[.]\d+[.]\d+[.]\d+[:](http|https|ftp).*
这将匹配到行尾。
请注意,为了便于阅读,我已将\\
转义为\
。你可能需要重新逃脱它们。