如何在python中使用正则表达式来搜索所有大小写组合

时间:2013-03-06 00:03:26

标签: python regex

在python中,我如何制作一个能够匹配单词的所有大小写组合的正则表达式,而无需事先格式化数据。例如,假设我想匹配文件中与单词名称匹配的行,但它是大写的。也就是说,名称可能类似于以下任何内容

Name
nAMe
NAme

3 个答案:

答案 0 :(得分:4)

确保在拨打电话,查找或搜索时传递re.IGNORECASE选项。

对于你的例子,它类似于:

import re
re.search('name', 'Name', re.IGNORECASE)
re.search('name', 'nAMe', re.IGNORECASE)
re.search('name', 'NAme', re.IGNORECASE)

答案 1 :(得分:1)

python re模块有一个标志re.IGNORECASE,它应该是你要找的东西。

  

re.IGNORECASE

     

执行不区分大小写的匹配;表达式如   [A-Z]也会匹配小写字母。这不受影响   当前的语言环境。

http://docs.python.org/2/library/re.html

答案 2 :(得分:0)

如果您不打算将re.compilere.IGNORECASE一起使用,则可以这样做:

string_of_pattern = r'(?i)name' # i means ignore case

当我们必须传递一个字符串时,这很有用。该文件在这里:

(?iLmsux)

(来自集合'i','L','m','s','u','x'的一个或多个字母。)该组匹配空字符串;字母设置相应的标志:re.I(忽略大小写),re.L(依赖于语言环境),re.M(多行),re.S(点匹配所有),re.U(取决于Unicode),以及re.X(详细),用于整个正则表达式。 (标志在模块内容中描述。)如果您希望将标志包含在正则表达式的一部分中,而不是将标志参数传递给re.compile()函数,这将非常有用。

请注意,(?x)标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空格字符之后使用。如果标志前面有非空白字符,则结果未定义。