大島小島古島五島小嶋兒島孤児古嶋小鳥大鳥児玉乞食北嶋木嶋厳島
この文字列を2文字ごとに区切りたい(カンマやスペースを挿入したいのですが)のですが
そのためにマッチングさせるにはどうすればいいでしょうか?
2文字おきの文字間がマッチングできるようなアンカーを指定できれば良さそうですが具体的に式が考えつきません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
これでいかがでしょうか?
python3
1import re 2 3text = '大島小島古島五島小嶋兒島孤児古嶋小鳥大鳥児玉乞食北嶋木嶋厳島' 4 5result = re.sub(r'(.)(.)(?=.)', r'\1\2,', text)
- 動作確認用Repl.it: https://repl.it/@jun68ykt/Q269786
投稿2020/06/13 16:48
編集2020/06/13 16:51総合スコア9058
0
文字ふた文字にマッチする正規表現は .. や .{2} です。
これさえ分かればre.findallでマッチする部分を全て切り出せます。
Python
1import re 2 3src = '大島小島古島五島小嶋兒島孤児古嶋小鳥大鳥児玉乞食北嶋木嶋厳島' 4 5tmp = re.findall('.{2}', src) 6print(tmp) # => ['大島', '小島', '古島', '五島', '小嶋', '兒島', '孤児', '古嶋', '小鳥', '大鳥', '児玉', '乞食', '北嶋', '木嶋', '厳島'] 7 8dst = ','.join(tmp) 9print(dst) # => 大島,小島,古島,五島,小嶋,兒島,孤児,古嶋,小鳥,大鳥,児玉,乞食,北嶋,木嶋,厳島
正規表現で簡潔に処理するのは慣れないとなかなか難しいので、
とりあえず言語側で片付けられそうな部分はさぼってしまっても良いでしょう。
Pythonの場合、主に次の四つが活用できます。
re.search | マッチするかどうか / マッチ部分の抜き出し |
re.findall | マッチする部分文字列の全取り出し |
re.split | 正規表現での分割 |
re.sub | 正規表現での置換 |
それぞれ慣れ親しんでおくと後々楽です。
re --- 正規表現操作 — Python 3.8.2 ドキュメント
投稿2020/06/14 04:02
総合スコア35676
0
正規表現を使って と質問ですが、正規表現にこだわらなければ、こんな方法があります。
p.py
python3
1import re 2 3data = "大島小島古島五島小嶋兒島孤児古嶋小鳥大鳥児玉乞食北嶋木嶋厳島x" 4 5words = re.split('(..)', data)[1::2] 6print(words) 7print(",".join(words)) 8 9group_by = 2 10words = [data[i:i + group_by] for i in range(0, len(data), group_by)] 11print(words) 12print(",".join(words))
data の文字数が奇数だったときにどうなるか? が 上の2つの方法は異なっています。
参考情報
- Pythonで文字列を2文字ずつ分割する
- リストを指定した数の要素ごとにまとめたい
https://www.lifewithpython.com/2014/10/python-split-list-into-chunks-of-even-size.html
投稿2020/06/14 01:28
総合スコア22328
0
ベストアンサー
「2文字置きの文字間」は多分無理。「2文字」を「2文字カンマ」に置換します。
Python
1outputstring = re.sub("(..)","\1,",inputstring)
最後にカンマを付けないためには、
Python
1outputstring = re.sub("(..)(?!$)","\1,",inputstring)
なお、正規表現の機能はマッチするだけです。
置換は正規表現の機能では無いので、どの言語・どのツールでの話であるのかの情報が必須です。
投稿2020/06/13 17:33
総合スコア86295
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。