【问题标题】:How do I execlude only numbers in this regular expression?如何仅排除此正则表达式中的数字?
【发布时间】:2020-06-16 08:47:01
【问题描述】:

我正在尝试匹配看起来像这样的单词

:test:
:soda_stream:
:test3:

等等。我现在拥有的是\:\S+\:,它适用于所有内容,除了我在文本中也有部分只有数字,比如:23:。这些我想排除,但没有成功。我查看了this StackOverflow 页面,但它不起作用。

有人知道怎么做吗?如果: 中只有数字,则可能只是一些添加。

【问题讨论】:

    标签: python-3.x regex


    【解决方案1】:

    考虑到当前示例,您可以使用

    :(?!\d+:)[^\s:]+:
    

    regex demo

    详情

    • : - 冒号
    • (?!\d+:) - 如果有一位或多位数字,则匹配失败,然后在当前位置右侧紧接着 : 进行匹配失败
    • [^\s:]+ - 除空格和冒号之外的 1 个或多个字符
    • : - 冒号

    【讨论】:

      【解决方案2】:

      作为替代方案,您可以在冒号之间匹配至少一个不是数字或空格字符的单个字符:

      :[^:\s]*[^:\s\d][^:\s]*:
      
      • : 字面匹配
      • [^:\s]* 匹配 0+ 次除 : 或空白字符以外的任何字符
      • [^:\s\d] 匹配除 : 或空白字符或数字以外的任何字符
      • [^:\s]* 匹配除 : 或空白字符以外的任何字符 0+ 次
      • : 字面匹配

      Regex demo

      【讨论】:

        猜你喜欢
        • 2022-07-22
        • 1970-01-01
        • 2019-10-07
        • 2017-02-04
        • 2021-09-16
        • 1970-01-01
        • 2016-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多