我在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 包中的类。