【问题标题】:Regex, capture 4 numbers surrounded by . or line start/end正则表达式,捕获由 . 包围的 4 个数字。或行开始/结束
【发布时间】:2019-04-26 12:42:38
【问题描述】:

我正在尝试捕获任何由“。”包围的 1-2 位数字。或一行的开头/结尾。

E.G

  • 1.0.4.11

  • 71.11.11.11

  • 0.11.0.0

有效且:

  • 1.
  • 1111
  • 11.11.11.
  • 01.10

无效

现在我有(?<=\.|^)\d{1,2}]?(?=\.|$),它将正确捕获数字,但也将捕获诸如 11.. 或 1.11 之类的组。

我需要扩展这个正则表达式以基本上验证它始终采用 x.x.x.x 格式,其中 x 是 1-2 位数字。

有关更多信息,此正则表达式将使用 wxWidgets 正则表达式类运行,但我相信这是标准正则表达式解析器。

注意

对于使用此作为参考的任何人...使用 wxWidgets,wxRegex 类必须使用 wxRE_ADVANCEDflag 构造,因为默认情况下它使用基本/快速实现,不包括用于这个表达式。

【问题讨论】:

    标签: c++ regex wxwidgets


    【解决方案1】:

    您可以通过专门查找字符串开头和结尾之间的 4 个组来使其不那么通用(如果您在开头或结尾从未有 .,则可以删除 \.?):

    ^\.?\d{1,2}\.\d{1,2}\.\d{1,2}\.\d{1,2}\.?$

    See in Regex101

    【讨论】:

    • 同意。或者使用 ^\.?\d{1,2}(?:\.\d{1,2}){3}\.?$ 进一步简化
    • 或者更短一点的^\.?\d\d?(?:\.\d\d?){3}\.?$
    猜你喜欢
    • 2017-03-05
    • 2018-04-13
    • 2010-11-21
    • 1970-01-01
    • 2021-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多