我正在尝试从多行生产线变量分配中提取多行值。以下测试用例无法在输入字符串中找到匹配项,并且我不得不承认我不明白为什么。欢迎在标准输出上帮助使此示例代码打印“ a \ b”。
#!/usr/bin/env python
def test():
s = r"""
FOO=a \
b
"""
import re
print type(s),s
regex = re.compile(r'^FOO=(.+)(?<!\\)$', re.M)
m = regex.search(s)
print m.group(1)
if __name__ == '__main__':
test()
最佳答案
re.M表示re.MULTILINE,但它与点的符号无关,而与^和$的符号有关
您需要指定re.DOTALL以使点即使与'\ n'也能够匹配
def test():
s = r"""
FOO=a \
b
"""
import re
print repr(s)
print '---------------------'
regex = re.compile(r'^FOO=(.+)(?<!\\)$', re.M)
print regex.search(s).group(1)
print '---------------------'
regex = re.compile(r'^FOO=(.+)(?<!\\)$', re.M|re.DOTALL)
print regex.search(s).group(1)
test()
结果
' \n\nFOO=a \\ \n\n b\n\n '
---------------------
a \
-----
'a \\ '
---------------------
a \
b
-----
'a \\ \n\n b\n\n '
关于python - 将多行make-line变量赋值与python正则表达式匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6624152/