0

Linux で python 正規表現を使用したときに、1 つの問題に遭遇しました。ターゲット文字列には、次のような複数行があります

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では機能しないようです。

double \n の前の文字列を一致させるにはどうすればよいですか。

お返事ありがとうございます。

4

1 に答える 1

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' に変換します。

于 2012-11-08T07:35:50.580 に答える