如何匹配正则表达式中可能可用或不可用的某些内容?

2024-02-28

我在网上发现了这个小东西(.*)((?::))((?:[0-9]+))$这将分割 IP 地址和端口。

eg.

[ab:cd::0]:22
host.domain.com:443
1.2.3.4:22

但是,它需要这种格式,不关心其他格式。

因此我做了一个小小的改变(.*)((?::))((?:[0-9]+))?$,然后仅包含可用的端口。

现在,URI 可以使用三种格式:

host.domain.com
host.domain.com: 
host.domain.com:port

我有点迷失在这里。因为在添加时?对于第二组(.*)((?::))?((?:[0-9]+))?$整个正则表达式被贪婪吃掉了(.*).

知道如何以好的方式处理这个问题吗?
BR
Patrik


您可以使用

^(.*?)(?:(:)([0-9]*))?$

See the 正则表达式演示 https://regex101.com/r/pe1snf/1.

Details

  • ^- 字符串的开头
  • (.*?)- 第 1 组:除了换行符之外的任何零个或多个字符,尽可能少
  • (?:(:)([0-9]*))? - an optional sequence of
    • (:)- 第 2 组:冒号
    • ([0-9]*)- 第 3 组:零个或多个数字
  • $- 字符串末尾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何匹配正则表达式中可能可用或不可用的某些内容? 的相关文章

随机推荐