这是此问题的后续问题: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!");
}
}
感谢。
+1 - 比我的回答好得多。 –
我猜对了,认为有一个比字符串操作更好的方法。感谢今天第二次 – nunos