Java 如何匹配一个带引号的字符串,后跟一个花括号中的字符串?
我需要一个正则表达式来匹配引号中的字符串,然后是空格,然后是圆括号,然后是花括号 例如,这是我想在Java中匹配的文本: "'Allo 'Allo!" (1982) {A Barrel Full of Airmen (#7.7)} “'Allo'Allo!”(1982){一桶满是飞行员(#7.7)} 这个的正则表达式是什么 对不起,我真的迷路了。我尝试了很多不同的事情,但现在我很难受。Java 如何匹配一个带引号的字符串,后跟一个花括号中的字符串?,java,regex,expression,brackets,Java,Regex,Expression,Brackets,我需要一个正则表达式来匹配引号中的字符串,然后是空格,然后是圆括号,然后是花括号 例如,这是我想在Java中匹配的文本: "'Allo 'Allo!" (1982) {A Barrel Full of Airmen (#7.7)} “'Allo'Allo!”(1982){一桶满是飞行员(#7.7)} 这个的正则表达式是什么 对不起,我真的迷路了。我尝试了很多不同的事情,但现在我很难受。“[^”]*”\s*\([^]*\)\s*{[^}]*}这应该可以做到: Pattern p = Pattern
“[^”]*”\s*\([^]*\)\s*{[^}]*}
这应该可以做到:
Pattern p = Pattern.compile("\"(.*?)\"\\s+\\((\\d{4})\\)\\s+\\{(.*?)\\}");
Matcher m = p.matcher("\"'Allo 'Allo!\" (1982) {A Barrel Full of Airmen (#7.7)}");
if (m.find()) {
System.out.println(m.group());
System.out.println(m.group(1));
System.out.println(m.group(2));
System.out.println(m.group(3));
}
输出:
"'Allo 'Allo!" (1982) {A Barrel Full of Airmen (#7.7)}
'Allo 'Allo!
1982
A Barrel Full of Airmen (#7.7)
“[^”]+“\s([^)]+)\s{[^}+}”(.*)([0-9][0-9][0-9][0-9][0-9])\{(.*)如果标题包含双引号,则此操作将失败:)可以在年份(4位数字)上更具选择性,以避免在输入行为不正确的情况下出现错误匹配。您的意思是整个原始行,即
m.group(0)
?噢,哇,谢谢这么多人,它可以工作,但不,我必须确保它可以用于我的整个文本文件,大约20Mb lol,但非常感谢。嘿,克莱特斯,你能帮我回答我的其他问题吗