我在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。
之前匹配字符串感谢您的回复。
答案 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
'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”。