2009-04-13 37 views
4

特别是,我想知道是否可以在启用多行模式的模式字符串中指定嵌入选项。也就是说,通常与Python正则表达式多行模式是这样启用:Python正则表达式允许嵌入选项吗?

pattern = re.compile(r'foo', re.MULTILINE) 

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

pattern = re.compile(r'(?m)foo') 

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

回答

6

是的。

docs:从所述一组 'I', 'L', 'M', 'S', 'U', 'X'

(?iLmsux)(一个或多个字母。 )

组 匹配空字符串;字母 设置相应的标志:re.I (忽略大小写),re.L(区域 依赖的),re.M(多线),re.S (点匹配所有),re.U(统一 相关),和re.X(详细),为 整个正则表达式。 (该 标记被Module Contents说明。)

如果希望 包括标志作为 正则表达式的一部分。这是有用的,而不是传递 一个标志参数的compile() 功能。

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