#文字で区切られた文字列から簡単な文を抽出しようとしています。
str = "#text text text \n text#"
このパターンで
pattern = '#(.+)#'
面白いことに、文字列に改行文字が含まれていると正規表現が一致しません
out = re.findall(pattern, str) # out contains empty []
しかし、文字列から\ nを削除すると、正常に機能します。これを修正する方法はありますか?
#文字で区切られた文字列から簡単な文を抽出しようとしています。
str = "#text text text \n text#"
このパターンで
pattern = '#(.+)#'
面白いことに、文字列に改行文字が含まれていると正規表現が一致しません
out = re.findall(pattern, str) # out contains empty []
しかし、文字列から\ nを削除すると、正常に機能します。これを修正する方法はありますか?
re.DOTALL
また、フラグを渡すと、.
一致が本当にすべてになります。
'。'を作成します 特殊文字は、改行を含むすべての文字に一致します。このフラグがない場合、「。」改行以外のものと一致します。
一致さre.DOTALL
せたい場合にも使用します:-.
newline
>>> out = re.findall('#(.+)#', my_str, re.DOTALL)
>>> out
['text text text \n text']
また、変数名として組み込み名を使用することはお勧めできません。my_str
の代わりに使用してくださいstr
。
この正規表現を試してください"#([^#]+)#"
区切り文字間のすべてに一致します。
DOTALL
コンパイルまたは一致にフラグを追加します。