2017-02-02 3 views
1

こんにちは私は与えられた文字列値からファイルパスとファイル名をグループ化したかったのです。matleとパターンを使ってfillePathとファイル名を分割する

com/abc/chilkatsoft/CkEmail1$.class

filePath = com/abc/chilkatsoft 
fileName = CkEmail1$.class 

私は(.*?)?(\\/.+)と試みたが、 '/' のそのspiting最初に出現しました。 これに関して、任意のバディーが私を助けることができますか?

実際、私は80%完成したログファイルデータを解析したかったのです。すなわち

45013 Thu Aug 15 19:42:38 IST 2013 com/chilkatsoft/CkEmail.class 
+0

を参照してください。 /(。+) '](https://regex101.com/r/DbHpYL/1) –

+0

...の代わりに正規表現を使用する理由は何ですか?** indexOf ** ??? –

+0

@ΦXocen笑Пepeúpaツあなたは 'lastIndexOf( '/')'を意味すると思いますよね? – Andreas

答えて

1

ログ行を解析しているので、あなたが一致する必要のあるデータは、貪欲ドットマッチングパターンを使用することが可能であり、ほぼ全行を占めています。

^(\d+)\s+(.*)\s+(.+)/(.+) 

ここregex demo

を参照してください、

  • ^ - 文字列/行
  • (\d+)を開始 - 1+空白( - グループ1は1桁以上
  • \s+をキャプチャ複数行の修飾子を使用する場合は通常のスペースに置き換えてください)
  • (.*) - 空白文字
  • (.+) - - 最後/
  • /までの任意の0+文字 - グループ2の最終空白
  • \sまでのラインの全体の残りの部分をキャプチャスラッシュ
  • (.+) - 行の残りの部分。

内部のパターンを綴る、パターンがより明確にするには:

^(\d+)\s+([a-zA-Z0-9\s]+\d{2}:\d{2}:\d{2}\s+[A-Za-z]+\s+\d{4})\s+(.+)/(.+) 

は、あなたがこのために正規表現を使用したい場合は、(。+) `[だろうthis regex demo

+1

@Wiktorにも感謝してくれてありがとうございます。 –

関連する問題