私は区切り文字として-
、+=
、==
、=
、+
、および空白を使用して文字列を分割したいです。デリミタが空白でない限り、その区切り文字を保持したい。Pythonの正規表現 - 余分なマッチング
:
def tokenize(s):
import re
pattern = re.compile("(\-|\+\=|\=\=|\=|\+)|\s+")
return pattern.split(s)
print(tokenize("hello-+==== =+ there"))
私はほとんど何
['hello', '-', '', '+=', '', '==', '', '=', '', None, '', '=', '', '+', '', None, 'there']
を得たが、私は出力が
['hello', '-', '+=', '==', '=', '=', '+', 'there']
ことが期待私はほんの少しの無関係なNone
と空の文字列があることを除いて、私は望んでいました。
なぜこのように動作していますか、私が望むものを得るためにはどうすれば変更できますか?
空の文字列は、お互いにすぐ隣に2つの一致する文字があるためです。したがって、分割すると、それらの間に '''が付きます。それは混乱のグループをキャプチャすると直感的ではありません – jozefg