在linux中使用python匹配多行

时间:2012-11-08 06:54:50

标签: python regex linux

我在Linux中使用python regex时遇到了一个问题。目标字符串具有多行,例如

This is a matched string_1.
This is a matched string_22.

Do not match this line.

我想要做的是匹配“\ n \ n”之前的所有内容。我用了

deleteString = re.compile('[\s\S]+\n\n')

但它似乎在Linux中不起作用。

如何在双\ n。

之前匹配字符串

感谢您的回复。

1 个答案:

答案 0 :(得分:2)

在这种情况下你不需要正则表达式:

import re
import sys

text = sys.stdin.read()

# using str.find()
result = text[:text.find('\n\n') + 1]

# using re
result2 = re.match(r'(.*?)$^$', text, flags=re.DOTALL | re.MULTILINE).group(1)

# check that the result is the same
for r in [result, result2]:
     print(repr(r))
assert result == result2

Output

'This is a matched string_1.\nThis is a matched string_22.\n'
'This is a matched string_1.\nThis is a matched string_22.\n'

如果您正在以文本模式从文件中读取输入,那么Python会自动将特定于平台的换行符转换为“\ n”。