【问题标题】:Python - Regex Ip that doesnt starts or ends with a dotPython - 不以点开头或结尾的正则表达式 Ip
【发布时间】:2018-11-12 19:18:08
【问题描述】:

我有一个查找 ip 的正则表达式:

'[0-9]+(?:\.[0-9]+){3}'

现在,如果 IP 以点开头或结尾,我需要使其失败。 例如,这些将失败:

- .1.1.1.1
- 1.1.1.1.
- 1.1.1.1.1
- 1.11.1.1.1

【问题讨论】:

  • 只需使用^$ 锚点,如图所示HERE
  • 输入实际上是否包含破折号和空格 - .1.1.1.1 ?显示您当前的代码:输入是什么以及如何在其中找到 IP?
  • @Gurman 我需要在大文本中找到 ip,您的示例不起作用
  • 您可能希望使用更复杂的正则表达式来匹配 IPv4,例如stackoverflow.com/questions/106179/…

标签: python regex ip


【解决方案1】:

试试这个正则表达式:

(?<!\.)(?:[0-9]+(?:\.[0-9]+){3})(?!\.)

Click for Demo

说明:

  • (?&lt;!\.) - 负向查找以确保您的 IP 模式前面没有 .

  • (?:[0-9]+(?:\.[0-9]+){3}) - 和你的模式一样

  • (?!\.) - 负前瞻以确保您的 IP 模式后面没有 .

另外,请注意,如果需要,还可以改进 IP 模式。

更新

根据您的评论,这是更新的正则表达式(我刚刚添加了单词边界以涵盖您提供的情况):

(?&lt;!\.)\b\d+(?:\.\d+){3}\b(?!\.)

【讨论】:

  • 它几乎是我正在寻找的东西,期待,还会找到以下内容:- 1.11.1.1.1,我得到 1.1.1.1,我不想要它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 2013-06-10
  • 2017-07-24
  • 1970-01-01
  • 2015-12-16
  • 1970-01-01
相关资源
最近更新 更多