在python中,我如何制作一个能够匹配单词的所有大小写组合的正则表达式,而无需事先格式化数据。例如,假设我想匹配文件中与单词名称匹配的行,但它是大写的。也就是说,名称可能类似于以下任何内容
Name
nAMe
NAme
等
答案 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]也会匹配小写字母。这不受影响 当前的语言环境。
答案 2 :(得分:0)
如果您不打算将re.compile
与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)标志会更改表达式的解析方式。它应该首先在表达式字符串中使用,或者在一个或多个空格字符之后使用。如果标志前面有非空白字符,则结果未定义。