2016-05-25 8 views
1

ない任意のコードの一部が、ちょうど私がこの出力は '\ S' があるため、[]であることが予想より良い正規表現を理解することが正規表現 Sおよび S説明

import re 
test=re.findall('\s[0-9]+','hello 23and 4world ') 
print test # works correctly 
[' 23', ' 4'] 

しかし

import re 
test=re.findall('\S[0-9]+','hello 23and 4world ') 
print test 

をしよう空白以外の文字と一致しますが、出力は['23']です。説明が参考になります。

+6

「2」は数字ですが、空白以外の文字です。 '\ S'は' 2'にマッチし、 '[0-9] +'は '3'にマッチします。 – HamZa

+2

@HamZa投稿その回答 – Barmar

答えて

1

2は数字ですが空白文字でもありません。 1234hello 1234and 4worldにマッチになるだろう意味

hello 23and 4world 
     ^^-[0-9]+ 
     ^--\S 

\Sマッチ2[0-9]+試合3

これを迅速に「デバッグ」する方法の1つは、グループを使用することです。an online tester(\S)([0-9]+)

関連する問題