2016-04-18 12 views
2

完全な文字列を特定のパターンに一致させたい。さんが言ってみましょう:単語が改行文字が続いている場合Python Regex - 改行で文字列を拒否する

word = "aaaa" 
test = re.match(r"^aaaa$", word) # this returns True 

しかし、:

word = "aaaa\n" 
test = re.match(r"^aaaa$", word) # Also returns True :(

しかし、私はそれがこの最後の場合にはFalseを返すための道を見つけたいです。 "\ n"を区別する方法はありますか?

+1

簡単な方法がありますが、 '^ aaaa(?=(?!\ n)$)'は動作します – rock321987

答えて

1

negative lookaheadsを使用して、改行文字が含まれているかどうかを確認できます。あなたのケースでは、^aaaa(?!\n)$です。

4

代わりのアンカー^と終わりの開始と\Zため$使用\A

>>> print re.match(r'\Aaaaa\Z', 'aaaa') 
<_sre.SRE_Match object at 0x1014b9bf8> 

>>> print re.match(r'\Aaaaa\Z', 'aaaa\n') 
None 

\Aは、文字列の実際の開始と\Z実際の終わりと一致し、唯一の\Aの一つと\Zがあることができ複数行の文字列であるのに対し、$は各行で一致させることができます。

私はちょうどFYI Python\Z試合で.NETJavaPCREDelphiPHPとは異なり、文字列の終端にのみreading this very good article on permanent line anchors.

を示唆しています。 Pythonは\zをサポートしていません。

+1

素晴らしいです。どのように私はそれを逃したのか分からない!本当にありがとう。 –

+0

これはうまくいっていることを知ってうれしいです。[この回答の左上に**チェックマーク**をクリックすることで回答をマークすることができます](http://meta.stackexchange.com/a/5235/160242) – anubhava

関連する問題