regex - 正则表达式从具有多项选择的主机获取端口
问题描述
我需要从 url 获取端口,我使用以下方法
https://regex101.com/r/yoBODY/1
(?:([^@]*)@)?(.\[.+\]|([^:]+))(?:[:](\d+))?
由于我对正则表达式很陌生,我错过了什么吗?
这是输入,我需要从中获取端口
test:222
https://aaa.com:333
https://www.aaa.com:333
aaa.bbb.cccc:8000
我得到一些带有端口的 URI/URL
如果可以,请告诉我
解决方案
对于用作独立字符串的字符串,您可以使用
^(?:https?:\/\/)?(?:([^@]*)@)?(\[[^][]+\]|([^:]+))(?::(\d+))?$
如果将这些字符串匹配为多行文本中的行,建议将\n
和添加\r
到否定字符类以避免在下一行溢出:
^(?:https?:\/\/)?(?:([^@\r\n]*)@)?(\[[^][\r\n]+\]|([^:\r\n]+))(?::(\d+))?$
请参阅正则表达式演示。详情:
^
- 字符串的开始(?:https?:\/\/)?
- 一个可选的http://
或https://
(?:([^@]*)@)?
- 任何零个或多个字符的可选序列,而不是@
(捕获到第 1 组),然后是一个@
字符(\[[^][]+\]|([^:]+))
- 第 2 组:[
除[
and之外的一个或多个字符]
,然后]
或除:
捕获到第 3 组之外的一个或多个字符(?::(\d+))?
- 一个可选序列:
和一个或多个数字被捕获到第 4 组$
- 字符串结束。
推荐阅读
- javascript - Sails.js 项目使用 passport.js 不会重定向到 twitter 登录
- perl - 列出目录中的文件并存储在数组中。该数组可以在循环外访问
- azure-application-insights - 为 AppInsight RestAPI 上下文设置时间跨度
- java - JsonPath:按数组中任何数组中的值过滤
- javascript - 未定义导出“MyModule” - 在 Jest 测试中
- javascript - d3 v5 轴比例更改平移方式太多
- python - 尝试下载 mysqlclient 时出现 gcc 错误
- node.js - 请解释 npx 限制 - 运行 npx mocha 时无法使用断言库
- matlab - 如何使这个 for 循环每次迭代都显示一个图形?
- c++ - 如何在动态数组中的某些对象上调用析构函数