我如何使用 Regex 从 URL 获取 PATH?
How i can get PATH from URL with Regex?
也许有人可以帮我解决这个正则表达式?
.*\:\/\/(?:www.)?([^\/]+)(\/.+")
我需要从 URL 获取所有路径。我试过了,但我不能只匹配没有引号的路径
您可以通过 Groovy 代码使用 JSR223 采样器获取路径。
- 声明/获取URL变量
解析 URL 以获得协议、主机、端口和路径。使用JSR223 Sampler,将以下代码粘贴到脚本区
URL url1 = new URL(vars.get('url'));
vars.put('protocol', url1.getProtocol());
vars.put('host', url1.getHost());
vars.put('port', url1.getPort() as String);
vars.put('path', url1.getPath());
vars.put('query', url1.getQuery());
使用 ${}
在脚本中的任何位置使用该变量
如果您必须先扫描 URL:
我已尝试提供一个可能适用于您的上下文的简单正则表达式(过于简化),但您可能必须修改它以提供一些额外的上下文。例如,x
是一个有效路径,这个正则表达式将识别它。但是,如果您尝试在 <img src="x">
等字符串中查找路径,它也会将 img
识别为有效的 url 路径。在那种情况下,您可能想要:
/<img\s+src="((https?|ftp):\/\/[^\/]+)?(\/?[^?#\s"]*)/i
var regex = /\b((https?|ftp):\/\/[^\/]+)?(\/?[^?#\s]*)\b/i;
var s = 'http://example.com/a/b?x=1';
var result = regex.exec(s);
console.log(result[3]);
如果 URL 的协议和主机部分始终存在,那么通过使协议和主机不是可选的,在几乎任何上下文中区分 URL 变得更容易:
/\b((https?|ftp)://[^/]+)(/?[^?#\s]*)\b/i;
你可以选择类似的东西:
(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?
演示:
更多信息:
也许有人可以帮我解决这个正则表达式?
.*\:\/\/(?:www.)?([^\/]+)(\/.+")
我需要从 URL 获取所有路径。我试过了,但我不能只匹配没有引号的路径
您可以通过 Groovy 代码使用 JSR223 采样器获取路径。
- 声明/获取URL变量
解析 URL 以获得协议、主机、端口和路径。使用JSR223 Sampler,将以下代码粘贴到脚本区
URL url1 = new URL(vars.get('url')); vars.put('protocol', url1.getProtocol()); vars.put('host', url1.getHost()); vars.put('port', url1.getPort() as String); vars.put('path', url1.getPath()); vars.put('query', url1.getQuery());
使用 ${}
在脚本中的任何位置使用该变量
如果您必须先扫描 URL:
我已尝试提供一个可能适用于您的上下文的简单正则表达式(过于简化),但您可能必须修改它以提供一些额外的上下文。例如,x
是一个有效路径,这个正则表达式将识别它。但是,如果您尝试在 <img src="x">
等字符串中查找路径,它也会将 img
识别为有效的 url 路径。在那种情况下,您可能想要:
/<img\s+src="((https?|ftp):\/\/[^\/]+)?(\/?[^?#\s"]*)/i
var regex = /\b((https?|ftp):\/\/[^\/]+)?(\/?[^?#\s]*)\b/i;
var s = 'http://example.com/a/b?x=1';
var result = regex.exec(s);
console.log(result[3]);
如果 URL 的协议和主机部分始终存在,那么通过使协议和主机不是可选的,在几乎任何上下文中区分 URL 变得更容易:
/\b((https?|ftp)://[^/]+)(/?[^?#\s]*)\b/i;
你可以选择类似的东西:
(?:([^:\/?#]+):)?(?:\/\/([^\/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?
演示:
更多信息: