Python正则表达式是否允许嵌入选项?

Jef*_*eff 4 python regex

特别是,我想知道我是否可以在模式字符串中指定一个嵌入式选项来启用多行模式.也就是说,通常使用Python正则表达式启用多行模式,如下所示:

pattern = re.compile(r'foo', re.MULTILINE)
Run Code Online (Sandbox Code Playgroud)

我想通过在模式字符串中指定多线匹配来获得多线匹配,而不是使用re.MULTILINE选项.您可以使用嵌入式(?m)表达式在Java中执行此操作.例如,

pattern = re.compile(r'(?m)foo')
Run Code Online (Sandbox Code Playgroud)

这在Python中是否可行,或者我是否需要使用re.M选项?一般来说,Python中的嵌入式模式选项是否有很好的参考?

nos*_*klo 6

是.

来自文档:

(?iLmsux) (来自集合'i','L','m','s','u','x'的一个或多个字母.)

该组匹配空字符串; 这些字母为整个正则表达式设置了相应的标志:( re.I 忽略大小写),re.L(依赖于语言环境),re.M(多行),re.S (点匹配所有),re.U(取决于Unicode)和re.X(详细).(这些标志中描述模块内容.)

如果您希望将标志包含在正则表达式的一部分中,而不是将标志参数传递给compile() 函数,这将非常有用.

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