在 python 中,如何创建一个匹配单词的所有大写组合的正则表达式,而无需事先格式化数据。例如,假设我想匹配文件中与单词名称匹配的行,但是它是大写的。也就是说,名称可能如下所示
Name
nAMe
NAme
等等
re.IGNORECASE
确保在调用匹配、查找或搜索时传递该选项。
对于您的示例,它将类似于:
import re
re.search('name', 'Name', re.IGNORECASE)
re.search('name', 'nAMe', re.IGNORECASE)
re.search('name', 'NAme', re.IGNORECASE)
python re 模块有一个标志re.IGNORECASE
,它应该是你要找的。
re.IGNORECASE
执行不区分大小写的匹配;像 [AZ] 这样的表达式也将匹配小写字母。这不受当前语言环境的影响。
如果你不打算使用re.compile
with re.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) 标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空白字符之后使用。如果标志前有非空白字符,则结果未定义。