これは、これに対するフォローアップの質問です: Regex for matching a music Chord、私に尋ねました。
String
コードの表現が有効かどうかを知るための正規表現ができたので (前の質問)、コードの 3 つの異なる部分 (ルート ノート、臨時記号、コード タイプ) を個別の変数に効果的に取得するにはどうすればよいでしょうか?
単純な文字列操作を行うこともできますが、前のコードに基づいて構築し、そのために正規表現を使用する方が簡単だと思いますか、それとも間違っていますか?
前述の質問から更新されたコードは次のとおりです。
public static void regex(String chord) {
String notes = "^[CDEFGAB]";
String accidentals = "(#|##|b|bb)?";
String chords = "(maj7|maj|min7|min|sus2)";
String regex = notes + accidentals + chords;
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(chord);
System.out.println("regex is " + regex);
if (matcher.find()) {
int i = matcher.start();
int j = matcher.end();
System.out.println("i:" + i + " j:" + j);
}
else {
System.out.println("no match!");
}
}
ありがとう。