使用匹配器和模式拆分fillePath和文件名

时间:2017-02-02 21:21:19

标签: java regex pattern-matching

您好我想根据给定的字符串值对文件路径和文件名进行分组。

e.g。 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

1 个答案:

答案 0 :(得分: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