我在http://regexone.com/example/6遇到了问题?您可以通过单击链接查看问题。需要一个正则表达式来从android开发应用程序中的特定堆栈跟踪中提取方法名称,文件名和行号。
我使用以下正则表达式来解决问题:
at widget.List.([a-zA-Z]+).([A-Za-z]+\.java).(\d{3,4}).
该表达式适用于该问题,但我不认为它是正确的正则表达式,因为其中没有包含帽子(^)和美元($)。
答案 0 :(得分:0)
点和括号是正则表达式中的特殊字符,因此应该进行转义:
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
答案 1 :(得分:0)
以下是可用于解决此示例的正则表达式:
^.*\s+at\s+.*\.(\w+)[(](\w+\.\w+)\:(\d+).*$
您不应在正则表达式中使用 widget.List。(正如您在上面的一条评论中所写的那样),因为这只会匹配widget.List包中的类。