【问题标题】:Include '-' in regex search with \w+ . Python使用 \w+ 在正则表达式搜索中包含“-”。 Python
【发布时间】:2013-06-07 20:00:54
【问题描述】:
k = 'a bunch of data and then name ""Serpin-ps""'        
print re.search(r'name\s""(\w+)""',k).group(1)

给予:

AttributeError: 'NoneType' object has no attribute 'group'

desired_output = 'Serpin-ps'

有道理,因为文本中有一个“-”。

有没有办法让正则表达式将“-”与所有其他字母数字字符结合起来?

【问题讨论】:

    标签: python regex search attributeerror


    【解决方案1】:

    您可以将\w 等预设字符类放入显式字符类中。所以:

    print re.search(r'name\s""([-\w]+)""',k).group(1)
    

    【讨论】:

    • [] 有什么作用?所以任何放在 \w 之前的字符在搜索过程中都会起作用?
    • @draconisthe0ry - 它被称为“字符类”。 [abc123] 将匹配一个字符:abc123。 (重复被取消,例如 [foobar] 将匹配 o 但不会匹配两个。)您还可以包含特殊字符类,例如 \w\d。您还可以包括范围,如[a-zA-Z0-9]。为了进一步举例,\w+ 等价于[a-zA-Z0-9_]+(注意下划线)。为了防止- 在字符类中被解释为范围运算符,文字- 必须出现在字符类的第一个或最后一个。所以[\w-] 也可以。
    • 太棒了!我在我的文件中发现了一些其他奇怪的名字。 () 和东西。我只是把它们和 - 放在一起,它起作用了。谢谢一百万
    • @draconisthe0ry:除了-(例如]^)之外,还有一些其他字符在字符类中被特殊处理。如果您需要参考详细信息(例如,要查看除- 之外的哪些其他字符必须在字符类中特殊处理),请参阅Regular Expression Syntax。另外,文档中的Regular Expression HOWTO 解释了这一点,但我认为acheong87 的解释比官方的解释更清楚。
    猜你喜欢
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多