2016-07-02 2 views
3

python3では、改行文字\ nやタブ\ tではなく、正確に空白文字とどのように一致しますか?Pythonの正規表現マッチスペースのみ

私はRegex match space not \n答えから\s+[^\n]答えを見てきましたが、次の例のために、それは動作しません。

a='rasd\nsa sd' 
print(re.search(r'\s+[^ \n]',a)) 

結果は、改行が一致している、<_sre.SRE_Match object; span=(4, 6), match='\ns'>です。

+0

を与えるだろうあなたも答えを受け入れられなかった供給していますPython 're'は' [[:blank:]] 'のようなPOSIX文字クラスをサポートしていません。 –

答えて

4

特別なグループは必要ありません。スペース文字で正規表現を作成するだけです。スペース文字には特別な意味はなく、単にスペースにマッチすることを意味します。あなたのケースのためにそう

RE = re.compile(' +') 

a='rasd\nsa sd' 
print(re.search(' +', a)) 

は、ところで `R '\ sの+ [^ \ nを]'`

<_sre.SRE_Match object; span=(7, 8), match=' '> 
+0

はい、これは別の空白と同様に独立したエスケープシーケンスを持つことが予想されています。 – Dimitry

6

あなたは改行とタブの使用

r"[^\S\n\t]+" 

[^\S]試合空白である非空白=任意の文字ではありません任意の文字を除いて1つの以上の空白文字を一致させたい場合。ただし、文字クラスはネゲートされたものなので、文字を追加すると一致しないようになります。

Python demo

import re 
a='rasd\nsa sd' 
print(re.findall(r'[^\S\n\t]+',a)) 
# => [' '] 

いくつかのより多くの考慮事項:\s matches [ \t\n\r\f\v] ASCIIフラグが使用されている場合。したがって、ASCIIにマッチするだけの場合は、[ \r\f\v]を使用して、必要な文字を除外することもできます。 Unicode文字列で作業する必要がある場合は、上記の解決策は実行可能なものです。