1

http://regexone.com/example/6で問題が発生しましたか? リンクをクリックすると、問題を表示できます。Android 開発アプリケーションの特定のスタック トレースからメソッド名、ファイル名、および行番号を抽出するには、正規表現が必要でした。

問題を解決するために、次の正規表現を使用しました。

at widget.List.([a-zA-Z]+).([A-Za-z]+\.java).(\d{3,4}).

式は問題に対して機能しますが、帽子(^)とドル($)が含まれていないため、正しい正規表現ではないと思います。

4

2 に答える 2

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
于 2013-03-05T11:48:02.417 に答える
0

この例を解決するために使用できる正規表現は次のとおりです。

^.*\s+at\s+.*\.(\w+)[(](\w+\.\w+)\:(\d+).*$

widget.Listは使用しないでください。これはwidget.Listパッケージのクラスにのみ一致するため、正規表現で(上記のコメントの1つに書いたように)。

于 2013-03-05T12:21:47.380 に答える