仮にpythonを用いますが、言語は何でも構いません。
python
1line = "0,[1,2],3,4,[5,6,7],[8]"
のような文字列(一つの数字または[数字をコンマで連結したもの]をコンマで連結したもの)があるときに、[]に挟まれていないコンマでsplitして
python
1splitted = ["[1,2]", "3", "4", "[5,6,7]", "[8]"]
としたいです。色々考えて以下のような方法を得ました。
大括弧に挟まれていないコンマのインデックスを取得して、そこで分割しています。
python
1line = "0,[1,2],3,4,[5,6,7],[8]" 2 3import re 4 5commas = [x.span()[0] for x in re.finditer(',', line)] # 全てのコンマのインデックス 6p = re.compile('[[^]]*?]') # 大括弧を検出する 7for x in p.finditer(line): # 大括弧に挟まれたものを除く 8 a, b = x.span() # a<=i<bは大括弧の中である 9 commas = [i for i in commas if not a<=i<b] 10 11 12splitted = [line] 13for i in reversed(commas): # 後ろにあるコンマで、順次lineを分割していく 14 splitted = [splitted[0][:i], splitted[0][i+1:]] + splitted[1:] 15 16# splitted => ['0', '[1,2]', '3', '4', '[5,6,7]', '[8]']
願わくばもっと単純に、「大括弧に挟まれていないコンマ」というような正規表現(が存在するならばそれ)を用いて、
python
1pattern = re.compile("大括弧に挟まれていないコンマ") 2pattern.split(line)
のようにしたいのですが、可能でしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/01 15:53