質問: ### 前提・実現したいこと 以下のような文字列の'-'の前後の文字列を正規表現で抽出したいです。 文字列: "金光第一高-帝京大-松下電器" 望ましい結果: ["金光第一高", "帝京大", "松下電器"] 上記の文字列はハイフンが3つですが、これが2つでも4つでも同様に抽出できるようにしたいです。 他の例: "熊本市商高-福岡大" "関西学院中-関西学院大-大日本土木-全神戸" など ### 発生している問題・エラーメッセージ 1. ハイフンの数が固定であれば、抽出できますが、動的に変化する場合、どう記述していいかがわからない。 2. splitで区切り文字を','にすれば解決しますが、これは出来る限り使いたくなく、正規表現で解決したい。 ### 補足情報(FW/ツールのバージョンなど) 言語はPythonのバージョン3.7を使用しています。
回答: 次のコードでいかがでしょうか: ``` import re pattern = re.compile(r'[^-]+') match = pattern.findall("金光第一高-帝京大-松下電器") print(match) match = pattern.findall("金光第一高-帝京大-松下電器-大阪近鉄バファローズ") print(match) match = pattern.findall("金光第一高-帝京大-松下電器-大阪近鉄バファローズ-東北楽天ゴールデンイーグルス") print(match) ``` 実行結果: ``` $ python test.py ['金光第一高', '帝京大', '松下電器'] ['金光第一高', '帝京大', '松下電器', '大阪近鉄バファローズ'] ['金光第一高', '帝京大', '松下電器', '大阪近鉄バファローズ', '東北楽天ゴールデンイーグルス'] ```