我正在尝试拆分这些字符串:
She Hopes He Loves You - Obscure Admission.aiff
I Hope They Can't Hold Us - Last Tenant.aiff
She Said I Love It - Integrated Employer.aac
She Will Try - Concrete Shell feat. Feminine Trench.aac
I Think They Can't Hold Us Down - Hard Imagination.wav
我试图获得两个不同的正则表达式:
例子是:“她希望他爱你 - 晦涩的入场.aiff”
“她希望他爱你”
对于第二个,我想在连字符(破折号)之后得到文本,但不是文件扩展名,例如我想获得的示例字符串:
“模糊入场”
答案 0 :(得分:2)
无需使用正则表达式,只需使用带有连字符
的拆分final String entireLine = "She Hopes He Loves You - Obscure Admission.aiff";
final String[] array = entireLine.split(" - ");
for (final String string : array) {
System.out.println(string);
}
输出:
她希望他爱你
Obscure Admission.aiff
答案 1 :(得分:0)
如果一个正则表达式都遵循上面的语法,那么这个正则表达式应该是(.*?)\s*-\s*(.*)\.\w+
。如果连字符周围没有空格,这也可以工作。
答案 2 :(得分:0)
您可以使用匹配的组。
您的正则表达式如下所示:([a-zA-Z\s]+)-\s([a-zA-Z\s]+)\.[a-zA-Z]+
然后你必须使用这种结构:
while (matcher.find){
System.out.println(matcher.group(2));
}
答案 3 :(得分:0)
无需使用正则表达式(或String.split
,也使用正则表达式。)
如果只有一个短划线,如上面的评论中所述:
int dashPos = str.indexOf("-");
int dotPos = str.lastIndexOf(".");
String bitBeforeDash = str.substring(0, dashPos);
String bitAfterDashButBeforeDot = str.substring(dashPos + 1, dotPos);