代码之家  ›  专栏  ›  技术社区  ›  Anurag Sharma

使用正则表达式删除以数字开头的字符串中的第一个单词

  •  1
  • Anurag Sharma  · 技术社区  · 7 年前

    我是一个使用正则表达式的新手。我有一根这样的绳子- 3G Wireless 我想删除所有从数字开始的单词,所以 3G无线 会变成 Wireless 是的。

    我想出了这个正则表达式来做这项工作-

    >>> re.sub("\S*\d\S*", "", "3g wireless")
    ' wireless'
    

    在这种情况下失败了-

    >>> re.sub("\S*\d\S*", "", "RPG400")
    ''
    

    我只想在这个词以数字开头的时候忽略它。

    3 回复  |  直到 7 年前
        1
  •  4
  •   DEEPAK SURANA    7 年前

    \s* 在开始的实际数字之前考虑任何空格。 \b 检查第一个单词。 此外,可以在后面使用strip()删除剩余字符串的开始和结束处不需要的空格。

    re.sub(r'\s*\b(\d+\w*)', '', "3g wireless").strip()
    # 'wireless'
    
    re.sub(r'\s*\b(\d+\w*)', '', "RPG400").strip()
    # 'RPG400'
    
        2
  •  0
  •   Austin    7 年前

    使用:

    import re
    
    s ='3g wireless'
    print(re.sub(r'\b(\d+\w*)', '', s))
    # wireless
    
    • \b 匹配单词边界。

    • \d+ 匹配一个或多个数字。

    • \w* 匹配零个或多个字母或数字。

    是的。

        3
  •  0
  •   moinsy    7 年前

    你要做的就是 ^\b(\d.*?)\b 我是说, 在哪里? \b(\d.*?)\b 创建以数字开头的单词边界,限制在其边界内, ^ 指定它在开始处。

    import re
    text = '3G Wireless'
    re.sub(r'^\b(\d.*?)\b','',text).strip()
    # Wireless
    

    This would show it in working!