1

#文字で区切られた文字列から簡単な文を抽出しようとしています。

str = "#text text text \n text#"

このパターンで

pattern = '#(.+)#'

面白いことに、文字列に改行文字が含まれていると正規表現が一致しません

out = re.findall(pattern, str) # out contains empty []

しかし、文字列から\ nを削除すると、正常に機能します。これを修正する方法はありますか?

4

4 に答える 4

6

re.DOTALLまた、フラグを渡すと、.一致が本当にすべてになります。

'。'を作成します 特殊文字は、改行を含むすべての文字に一致します。このフラグがない場合、「。」改行以外のものと一致します。

于 2012-12-12T15:10:55.987 に答える
5

一致さre.DOTALLせたい場合にも使用します:-.newline

>>> out = re.findall('#(.+)#', my_str, re.DOTALL)
>>> out
['text text text \n text']

また、変数名として組み込み名を使用することはお勧めできません。my_strの代わりに使用してくださいstr

于 2012-12-12T15:11:05.397 に答える
2

この正規表現を試してください"#([^#]+)#"

区切り文字間のすべてに一致します。

于 2012-12-12T15:11:06.830 に答える
0

DOTALLコンパイルまたは一致にフラグを追加します。

于 2012-12-12T15:10:50.137 に答える