在这个例子中,我们将使用来自 Android adb 调试会话的真实输出。你的目标是,运用之前学到的各种正则表达式技巧,从堆栈跟踪的行中提取出文件名(filename)、方法名(method name)和行号(line number)。
这些堆栈跟踪的格式如下:at package.class.methodname(filename:linenumber)
| Task | Text | Capture Groups | |
| 跳过 | W/dalvikvm( 1553): threadid=1: uncaught exception | ![]() |
|
| 跳过 | E/( 1553): FATAL EXCEPTION: main | ![]() |
|
| 跳过 | E/( 1553): java.lang.StringIndexOutOfBoundsException | ![]() |
|
| 捕获 | E/( 1553): at widget.List.makeView(ListView.java:1727) | makeView ListView.java 1727 | ![]() |
| 捕获 | E/( 1553): at widget.List.fillDown(ListView.java:652) | fillDown ListView.java 652 | ![]() |
| 捕获 | E/( 1553): at widget.List.fillFrom(ListView.java:709) | fillFrom ListView.java 709 | ![]() |
| 提示 | 可以使用正则表达式 (\w+)\(([\w\.]+):(\d+)\) 来提取方法名、文件名和行号。这个表达式的第一个捕获组是方法名,后面跟着一个转义的左括号,然后是文件名(第二个捕获组),再跟一个冒号,最后是行号(第三个捕获组),并以右括号结束。 |