2017-08-23 14 views
0

英数字と改行ではなく特殊文字を含む文字列と一致させたいと思います。しかし、文字列に改行があるときはいつでも、それは改行文字にもマッチします。私はいくつかのフラグのためにドキュメントをチェックしたが、どれも関連性がないと見なされたPython正規表現改行が一致しました

以下は、Pythonのサンプルコードでは、期待される結果は私が最後に改行を持っているとして、それが一致していなければならないことであるREPL

>>> import re 
>>> s = "do_not_match\n" 
>>> p = re.compile(r"^[a-zA-Z\+\-\/\*\%\_\>\<=]*$") 
>>> p.match(s) 
<_sre.SRE_Match object; span=(0, 12), match='do_not_match'> 

を3.6.2。

https://regex101.com/r/qyRw5s/1

私は私がここで行方不明です何に少し混乱しています。

+0

'$ \ 'を' \ Z'に置き換えます。 –

+0

それはPythonのどのバージョンであるかは関係ありません。 –

+0

ありがとうWiktor。コンテキストは関連しているかもしれませんが、質問の観点からは明らかな重複ではありません。だから、これが私が探していた答えを見つけることができなかった理由です。また、できるだけ多くの情報を提供しようとしていました。私は助けに感謝します。 –

答えて

3

(存在する場合)の前にの最後に一致するのは、$です。

最後に改行をマッチさせたくない場合は、$の代わりに\Zを正規表現に使用してください。

reモジュールのマニュアルを参照してください:

「$」
は、文字列の末尾にマッチするか、単に文字列の末尾の改行の前に、

だけでZ
マッチ\ストリングの終わり。

+0

ありがとうございます。私はその文書を読んだが、それは私には分かりませんでした。私はあなたの答えを受け入れる。私はまだregex101がこの事実を無視していた理由はまだわかりません。 –

+0

私は、実際の入力キーを '' \ n "'の代わりに使用する必要があると思います。 –

+0

本当です!明らかに私に見せてくれてありがとう。 :| –

関連する問題