[英]How can I express a multi-line regex in assertRegex in Python 3?
我正在使用 Python 3.4 中单元测试库中的unittest
() function 。 它只需要两个相关参数:要匹配的文本和正则表达式。 这似乎阻止我表达任何与正则表达式相关的常量,例如re.MULTILINE 。
如何构建或指定多行正则表达式并将其与assertRegex()
一起使用? 或者,是否有解决我的问题的相关方法?
见这里的Python文档:
(?iLmsux)
(来自集合'i','L','m','s','u','x'的一个或多个字母。)该组匹配空字符串; 字母设置相应的标志:re.I(忽略大小写),
re.L
(依赖于语言环境),re.M
(多行),re.S
(点匹配所有),re.U
(取决于Unicode),以及re.X
(详细),用于整个正则表达式。 (标志在模块内容中描述。)如果您希望将标志包含在正则表达式的一部分中,而不是将标志参数传递给re.compile()
函数,这将非常有用。请注意,
(?x)
标志会更改表达式的解析方式。 它应该首先在表达式字符串中使用,或者在一个或多个空格字符之后使用。 如果标志前面有非空白字符,则结果未定义。
一种方法是使用re.compile
构建 Regexp(官方 Python 3 参考)。 一个例子是
self.assertRegex(str1, re.compile('\\bcd '+re.escape(os.getcwd())+'\n', re.M | re.I))
这在表达式复杂时很有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.