regex - 将相对 URL 转换为绝对 URL

标签 regex bash url

输入:

  • 基本网址:www.example.com/1/2/index.php
  • 相对网址:../../index.php

输出:

  • 绝对网址:www.example.com/index.php

如果使用 sed 就完美了。

据我了解,此正则表达式应为 URL 中的每个 ../ 删除一个 somefolder/

最佳答案

realpath 是一种快速但有点笨拙的方式来做你想做的事。
(实际上,令我惊讶的是它没有正确处理 URL;它将它们视为普通的旧文件系统路径。)
~$ realpath -m http://www.example.com/1/2/../../index.php => ~$/home/username/http:/www.example.com/index.php
-m(表示“缺失”)表示要解析路径,即使它的组件实际上并不存在于文件系统中。
因此,您仍然需要剥离其中的实际文件系统部分(即 $(pwd))。请注意,协议(protocol)的斜杠-斜杠也被规范化为单个斜杠。因此,您最好不要在输入中保留“http://”,而是将其添加到输出中。
有关完整故事,请参见 man 1 realpath。或者 info coreutils 'realpath invocation' 如果您安装了信息系统,则可以获得更详细的完整故事。

关于regex - 将相对 URL 转换为绝对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19618754/

相关文章:

codeigniter - 可以将空 URL 参数传递给我的 Controller 吗?

sql - 如何获得与Oracle SQL中的正则表达式匹配的字符串的一部分

mysql - 正则表达式提取mysql字段中的json值

bash - 变量中的 rsync 选项

bash - 进入 grep -v 时获取退出代码

java - 将 URL 解析为组件

MySQL - 需要字符串中最大匹配字母的搜索结果

javascript - RegEx 引用被替换的字符

bash - Ubuntu 脚本在 CRON 中不起作用

node.js - 未捕获的类型错误 : URL is not a constructor using WHATWG URL object support for electron