Python - 正则表达式不以点开头或结尾

时间:2018-06-03 06:38:30

标签: python regex 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

1 个答案:

答案 0 :(得分:1)

试试这个正则表达式:

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

<强> Click for Demo

<强>解释

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

  • (?:[0-9]+(?:\.[0-9]+){3}) - 与您的模式相同

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

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

<强>更新

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

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