Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何匹配一个带引号的字符串,后跟一个花括号中的字符串?_Java_Regex_Expression_Brackets - Fatal编程技术网

Java 如何匹配一个带引号的字符串,后跟一个花括号中的字符串?

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

我需要一个正则表达式来匹配引号中的字符串,然后是空格,然后是圆括号,然后是花括号

例如,这是我想在Java中匹配的文本:

"'Allo 'Allo!" (1982) {A Barrel Full of Airmen (#7.7)} “'Allo'Allo!”(1982){一桶满是飞行员(#7.7)} 这个的正则表达式是什么

对不起,我真的迷路了。我尝试了很多不同的事情,但现在我很难受。

“[^”]*”\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,但非常感谢。嘿,克莱特斯,你能帮我回答我的其他问题吗