【问题标题】:Python RegEx check stringPython RegEx 检查字符串
【发布时间】:2021-05-26 11:05:53
【问题描述】:

我试图在输出中设置正确的版本。 我有这个可能的字符串:

  • 0.0.4.1 #1.
  • 7.51.4.1 #2.
  • 0.1.4.1 #3.

我需要检查,如果“0”。正在开始(设置输出不带 0. 或 0.0.)

输出 1. 将只有 "4.1",2. 将保持 相同,3. 将是 1.4.1

我正在尝试设置正确的表达式,例如 ^([0\.]{1})([.\d]{3})+$,但即使我使用 {1} 量词(只有一个“0”),它也无法正常工作。

有人知道吗?

【问题讨论】:

  • re.sub(r'^(0+\.?){1,}', '', version) ^(0+\.?){1,}
  • version.lstrip('0.') 应该不用担心正则表达式...

标签: python python-3.x regex string regex-group


【解决方案1】:

如果应该有 3 个点的 4 位数字部分,您可以先使用正向预测来断言格式。

在替换中使用空字符串。

^(?=\d+(?:\.\d+){3}$)0+\.(?:0+\.)*
  • ^ 字符串开始
  • (?=\d+(?:\.\d+){3}$) 正向前瞻,用 3 个点断言 4 位部分
  • 0+\. 匹配 1+ 个零和 .
  • (?:0+\.)* 可选择重复匹配 1+ 个零和 .

Regex demo | Python demo

例子

import re
strings = ["0.0.4.1", "7.51.4.1", "0.1.4.1", "001", "0.1", ".0.1", "0.0.0.0", "0.1.2.3.4.5"]
pattern = r"^(?=\d+(?:\.\d+){3}$)0+\.(?:0+\.)*"
for s in strings:
    print(re.sub(pattern, "", s))

输出

4.1
7.51.4.1
1.4.1
001
0.1
.0.1
0
0.1.2.3.4.5

其他选项可能是在开头匹配零和 .,然后重复匹配零和点。

^0+\.(?:0+\.)*

Regex demo

或者更广泛的模式来匹配所有前导点和零:

^0+\.[.0]*

Regex demo

【讨论】:

  • regex101.com 太棒了!还没有看到,非常感谢
  • 效果很好,非常感谢。
  • @howard 欢迎您。请考虑通过单击左侧的 ✓ 来接受答案(请参阅How to accept SO answers)。请注意,您会得到 2 reputation points 接受解决方案。
【解决方案2】:

使用这个简单的正则表达式: ^[0\.]+

https://regex101.com/r/zUKutI/1/

【讨论】:

    【解决方案3】:

    你可以使用

    import re
    texts = ['0.0.4.1','7.51.4.1','0.1.4.1']
    for text in texts:
        m = re.fullmatch(r'(?:0+\.)*(\d+(?:\.\d+)*)', text)
        if m:
            print(m.group(1))
    # => 4.1
    #    7.51.4.1
    #    1.4.1
    

    请参阅Python demo注意re.fullmatch 需要完整的字符串匹配,因此无需指定 ^$ 锚点。

    注意 2:如果您不想匹配 0.0.0.0 中的任何内容,请在返回值之前添加 if m.group(1).replace('0',''): 检查,请参阅 this Python demo

    查看regex demo的含义

    • (?:0+\.)* - 一个或多个 0s 和一个点出现零次或多次
    • (\d+(?:\.\d+)*) - 第 1 组:一位或多位数字,然后是一个点和一位或多位数字的零次或多次重复。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多