这是这个问题的后续问题:Regex for matching a music Chord,由我提出。
现在我有一个正则表达式可以知道String
和弦的表示是否有效(上一个问题),我怎样才能有效地将和弦的三个不同部分(根音、临时记号和和弦类型)转换为单独的变量?
我可以做简单的字符串操作,但我想在前面的代码上构建并使用正则表达式会更容易,还是我错了?
以下是上述问题的更新代码:
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!");
}
}
谢谢。