Regular Expression Modifiers: Option Flags
Regular expression literals may include an optional modifier to control various aspects of matching. The modifiers are specified as an optional flag. You can provide multiple modifiers using exclusive OR (|), as shown previously and may be represented by one of these −
Modifier | Description |
---|---|
re.I | Performs case-insensitive matching. |
re.L | Interprets words according to the current locale. This interpretation affects the alphabetic group (w and W), as well as word boundary behavior ( and B). |
re.M | Makes $ match the end of a line (not just the end of the string) and makes ^ match the start of any line (not just the start of the string). |
re.S | Makes a period (dot) match any character, including a newline. |
re.U | Interprets letters according to the Unicode character set. This flag affects the behavior of w, W, , B. |
re.X | Permits "cuter" regular expression syntax. It ignores whitespace (except inside a set [] or when escaped by a backslash) and treats unescaped # as a comment marker. |
①.re.I #忽略大小写
string2="ABCabc"
m=re.search("[a-z]+",string2)
m1=re.search("[a-z]+",string2,re.I)
print(m.group())
print(m1.group())
#结果:
abc
ABCabc
②re.M #多行,"^"匹配每行的开头,"$"匹配每行的末尾,只影响^和$
string3="yaobin jack rain hy"
m=re.search("^y.+$",string3)
m1=re.search("^y.+$",string3,flags=re.M)
if m:
print("m: %s"%(m.group()))
if m1:
print("m1: %s"%(m1.group()))
#结果
m1: yaobin
③re.S #使"."匹配包含换行符在内的任意字符
string="abc dsf"
m=re.match("(^a.*$)",string)
m1=re.match("(^a.*$)",string,re.S)
if m:
print("m: %s"%(m.group()))
if m1:
print("m1: %s"%(m1.group()))
#结果:
m1: abc
dsf