我正在尝试使用正则表达式来查找特定的起始字符,然后在该特定行上获取其余文本。
例如,文字可以像......
V:中间声音 T:节奏我想使用正则表达式来获取“V:”及其背后的文字。
使用正则表达式有没有任何好的,快捷的方法?
答案 0 :(得分:4)
如果你的起始角色是固定的,你会创建一个类似的模式:
Pattern vToEndOfLine = Pattern.compile("(V:[^\\n]*)")
并使用find()
而不是matches()
。
如果你的起始角色是动态的,你总是可以写一个方法来返回所需的模式:
Pattern getTailOfLinePatternFor(String start) {
return Pattern.compile("(" + start + "[^\\n]*");
}
这些可以根据您的需要进行一些处理。
答案 1 :(得分:1)
对于模式匹配尝试您的示例:
N:* $
答案 2 :(得分:1)
这是最好,最干净,最简单(即一线)的方式:
String[] parts = str.split("(?<=^\\w+): ");
说明:
正则表达式使用正面外观在第一个单词(在本例中为“V”)之后打破“:”并捕获两半。
这是一个测试:
String str = "V: mid-voice T: tempo";
String[] parts = str.split("(?<=^\\w+): ");
System.out.println("key = " + parts[0] + "\nvalue = " + parts[1]);
输出:
key = V
value = mid-voice T: tempo