首页 > 解决方案 > Python - 不以点开头或结尾的正则表达式 Ip

问题描述

我有一个找到 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

标签: pythonregexip

解决方案


试试这个正则表达式:

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

点击演示

解释:

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

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

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

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

更新

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

(?<!\.)\b\d+(?:\.\d+){3}\b(?!\.)


推荐阅读