【问题标题】:How to match 10 numbers with or without spaces with Regex?如何使用正则表达式匹配 10 个带或不带空格的数字?
【发布时间】:2021-08-02 13:33:48
【问题描述】:

我正在寻找匹配 10 位数字的正则表达式。但是,这个数字可以在不同的地方包含许多空格。

它需要匹配的几个例子是:

7 367151 029

7367151079

60 124 44 11 0

1223 123 5678

如您所见,空格是完全随机的,没有办法说会有多少空格。实际数字之前也可以有很多空格。

到目前为止我所拥有的是:.*([\d ]{13})

但是,这也会计算空格,这会导致正则表达式缺少前几个数字。

此外,匹配前 10 个数字很重要,因为字符串可能如下所示:

ESADF 310912 1 23 9 EKJL 129301234812。

【问题讨论】:

  • 很简单:[\d ]{10}
  • 这个解决方案的问题是它获取最后 10 个字符,包括空格。因此,如果存在前几位数字,它就会丢失。
  • 你用什么语言来实现这个正则表达式?
  • 我正在使用python!
  • 我不确定我是否理解。你期待ESADF 310912 1 23 9 EKJL 129301234812 匹配吗?

标签: python regex


【解决方案1】:

@Tranbi 的解决方案略有不同,即使有多个空格分隔数字,这也有效。

(\d\s*?){10}

【讨论】:

    【解决方案2】:

    这种模式应该可以工作:

    ^(\s?\d\s?){10}
    

    如果您想去除前导和尾随空格,并在字符串中的任何位置(而不仅仅是开头)找到该序列:

    \d(\s?\d\s?){8}\d
    

    【讨论】:

    • 作为非捕获组可能更好:^(?:\s?\d\s?){10}
    • 当然,在这种情况下捕获是没有用的。不过,它使 Regex 更容易理解。如果您认为合适,请随时编辑我的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-28
    相关资源
    最近更新 更多