2

次の問題に取り組んでいます: http://regexone.com/example/6 ?

正規表現を使用して最初の括弧をキャプチャできないことがわかりました。これはこれまでの私の正規表現です:at (\w+).(\w+)\.(\w+)

これは、正規表現が処理する必要があるサンプル行です。at widget.List.makeView(ListView.java:1727)

4

5 に答える 5

1

いくつかの括弧の間のすべてをキャプチャするには、括弧を含めます。

(\(.*?\))。これにより、たとえば、「(ListView.java:1727)」がキャプチャグループ1に配置されます。これは、正規表現のフレーバーに応じて、として参照できます\1

したがって、(\(.*?\))\ 1を介してアクセスできる'(ListView.java:1727)'になります。

括弧内を一致させたいが、キャプチャの一部として括弧自体をキャプチャしたくない場合は、次のようにすることができます \((.*?)\)。これで、\1は「ListView.java:1727」になります。

括弧内に個別のものを入れたい場合は、のようなことを行うことができます\((.*?):(.*?)\)。これにより、\ 1は「ListView.java」になり、\2は「1727」になります。

それは役に立ちますか?

于 2013-01-13T21:38:04.617 に答える
0

実際に機能する正規表現を提供するだけで、実際に何かを学ぶことができるかどうかはわかりませんが、次のようになります。

at [^\.]+\.[^\.]+\.([^\.]+)\((.+):(\d+)\)

またはもう少し単純です:

at \w+\.\w+\.(\w+)\((\w+\.\w+):(\d+)\)
于 2013-01-12T20:29:26.350 に答える
0

使った

.*\..*\.(\w+)\((\w+\.\w+):(\d+)\)
于 2013-07-08T10:04:31.307 に答える
0

私はそれをもう少し一般的にします。

/at ([\w.]+)\(([^:]+):(\d+))

メモリ キャプチャは次のとおりです。

  1. クラス
  2. ファイル名
  3. 行番号
于 2013-07-08T12:08:33.390 に答える