我在http://regexone.com/example/6处遇到问题?您可以通过点击链接查看问题。需要一个正则表达式来从android开发应用程序中的特定堆栈跟踪中提取方法名称,文件名和行号。使用正则表达式提取堆栈跟踪中的特定信息
我用下面的正则表达式来解决这个问题:
at widget.List.([a-zA-Z]+).([A-Za-z]+\.java).(\d{3,4}).
表达作品的问题,但我不认为它正确的正则表达式,因为没有帽子(^)和美元( $)包含在其中。
我在http://regexone.com/example/6处遇到问题?您可以通过点击链接查看问题。需要一个正则表达式来从android开发应用程序中的特定堆栈跟踪中提取方法名称,文件名和行号。使用正则表达式提取堆栈跟踪中的特定信息
我用下面的正则表达式来解决这个问题:
at widget.List.([a-zA-Z]+).([A-Za-z]+\.java).(\d{3,4}).
表达作品的问题,但我不认为它正确的正则表达式,因为没有帽子(^)和美元( $)包含在其中。
点和括号正则表达式中一个特殊字符,因此应该被转义:
Pattern pattern = Pattern.compile ("at widget\\.List\\.(\\w+)\\((\\w+\\.java):(\\d+)\\)");
Matcher m = pattern.matcher ("...at widget.List.makeView(ListView.java:1727)...");
m.find();
System.out.println ("Method name: " + m.group (1));
System.out.println ("File name: " + m.group (2));
System.out.println ("Line number: " + m.group (3));
对我来说,输出是:
Method name: makeView
File name: ListView.java
Line number: 1727
这里是一个可以用来解决这个问题的正则表达式例如:
^.*\s+at\s+.*\.(\w+)[(](\w+\.\w+)\:(\d+).*$
您不应该使用widget.List。在你的正则表达式中(正如你在上面的一个注释中所写的那样),因为这只会匹配widget.List包中的类。
帽子开始的字符串美元是字符串的结尾,为什么你需要EM? – Sergio 2013-03-05 11:42:42
所以,这不是一个字符串?我猜这是... – codeLearner 2013-03-05 11:44:15
好吧,换句话说,如果你把帽子放在你的正则表达式模式之前,它将只在字符串开始处开始搜索,所以^ [d +] $将找到字符串1234,但会跳过a123或123b – Sergio 2013-03-05 11:48:58