2017-02-02 62 views
1

您好,我想從給定的字符串值組文件路徑和文件名。使用匹配器和模式分割fillePath和文件名

例如com/abc/chilkatsoft/CkEmail1$.class

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

我試圖與(.*?)?(\\/.+)但其吐涎的 '/' 第一次出現。 任何夥伴都可以幫我解決這個問題。

其實我想解析日誌文件數據我已經完成了80%。即

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

如果你要使用這個正則表達式,這將是['(+)。 /(.+)'](https://regex101.com/r/DbHpYL/1) –

+0

任何使用正則表達式的原因而不是....讓我們說** indexOf ** ??? –

+0

@ΦXocę웃Пepeúpaツ我認爲你的意思是'lastIndexOf('/')',對吧? – Andreas

回答

1

既然你解析日誌行,你需要搭配幾乎佔據了整條生產線,可以使用貪心點匹配模式的數據。

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

參見regex demo

這裏,

  • ^ - 串/行啓動
  • (\d+) - 第1組捕捉1個或多個數字
  • \s+ - 1+空格(如果您使用多行修飾符,請使用常規空間替換)
  • (.*) - 第2組捕獲該行的所有的剩餘到最終的空白
  • \s - 一個空格字符
  • (.+) - 任何0+字符,直到最後/
  • / - 斜線
  • (.+) - 該行的其餘部分。

爲了使圖案更清晰,拼出裏面的圖案:

^(\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其作品也適用於我。 –