[英]Need help in extracting a expression from a log using regular expressions in Java
我有一个日志作为字符串,并且我试图从中捕获错误消息。 我尝试过的正则表达式不起作用。
String =“重试错误:[[\\”帐单\\“,\\ {u'non_field_errors':[u'提供了无效的付款电子邮件']} \\”]]“
我需要提取错误消息是
提供的付款电子邮件无效
我如何使用正则表达式提取它?
我尝试了模式Retrying for error: (\\\\.+)
,但是不起作用:
String pattern = "Retrying for error: (\\.+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(unescapedStr);
if (m.find()) {
error = m.group(1);
}
如何获得预期的结果?
提供了无效的付款电子邮件,实际:空
您不必使用正则表达式。 这个怎么样
String x = "Retrying for error: [[\"billing\",\\{u'non_field_errors': [u'Invalid payment email provided']}\"]]";
String c = x.replace("Retrying for error: ","");
String g = c.substring(c.lastIndexOf('[')+1);
String v = g.substring(0, g.indexOf(']'));
System.out.println(v);
此打印
u'Invalid payment email provided'
现在您的日志中是否有多个Retrying for error:
实例Retrying for error:
还可以吗
"Retrying for error: [[\\"billing\\",\\\\{u'non_field_errors': [u'Invalid payment email provided']}\\"]]";
代表您的日志中的一行?
主要思想是:如果日志文件中的每一行只有一个Retrying for error:
实例,那么您可以轻松地一次解析该日志一行,并反复剥离不需要的内容。
您可以使用以下正则表达式:
Retrying for error:.*\[u'([^']+)
参见regex演示 。
细节
Retrying for error:
-文字子字符串 .*
-尽可能多的除换行符以外的0+个字符 \\[u'
一个[u'
子字符串 ([^']+)
-捕获组#1( matcher.group(1)
值):除'
以外'
1个字符。 参见Java演示 :
String unescapedStr = "Retrying for error: [[\"billing\",\\{u'non_field_errors': [u'Invalid payment email provided']}\"]]";
String pattern = "Retrying for error:.*\\[u'([^']+)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(unescapedStr);
if (m.find()) {
System.out.println(m.group(1));
}
// => Invalid payment email provided
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.