2016-10-07 13 views
1

これはおそらく簡単な質問ですが、私はPythonで文字列を分割するのに苦労しています。私の正規表現は、このようなグループの区切りました:私が期待したものではありませんどのPythonの正規表現分割でグループを無視するにはどうすればよいですか?

['This', ' ', 'is', ' ', 'my', ' ', 'test', ' ', 'string', ', ', 'hopefully', ' ', 'I', ' ', 'can', ' ', 'get', ' ', 'the', ' ', 'word', ' ', 'i', ' ', 'need'] 

:ここでの結果です

testString = "This is my test string, hopefully I can get the word i need" 
testAgain = re.split("(\W+)", testString) 

myRegex = "(\W+)" 

をそして、私は言葉にこの文字列を解析したいです。私が含まれているために、リストを期待しています:

['This','is','my','test']......etc 

は今、私はそれが私の正規表現でグループ化とは何かを知っている、と私は括弧を削除することで問題を解決することができます。 しかし、どのように括弧をつけて上記の結果を得ることができますか?この質問については申し訳ありません

、あなたがsimly行うことができます

+1

なぜあなたはそれらの括弧(グループをキャプチャ)を保持したいですか? –

+0

Yiyはまだキャプチャグループを使用したいと思っていますか? 'myRegex = r" \ s *([^ \ w \ s])\ s * "を試してください。" –

答えて

1

How to split but ignore separators in quoted strings, in python?の場合、分割したアレイを単純にスライスすることができます。あなたが最初の1から始まる、他のすべてのメンバーをしたいので、それはそうするのは簡単です(そう1,3,5,7)

あなたは、[スタートステップ::終了]を使用することができ、以下に説明するように表記:

testString = "This is my test string, hopefully I can get the word i need" 
testAgain = re.split("(\W+)", testString) 
testAgain = testAgain[0::2] 

また、\Wは、句読点を含む単語以外の文字と一致することを指摘しておきます。句読点を維持したい場合は、正規表現を変更する必要があります。

+0

はい、これは私が探していたものです。ありがとうございました! – Andrew

0

を私はグループで正規表現splitingの公式Pythonドキュメントを読んでいるが、空のスペースが私のリストにある理由を、私はまだ理解していない:

これを行うための
testAgain = testString.split() # built-in split with space 

異なるregex方法:この回答で述べたように

testAgain = re.split(r"\s+", testString) # split with space 
testAgain = re.findall(r"\w+", testString) # find all words 
testAgain = re.findall(r"\S+", testString) # find all non space characters 
関連する問題