首页 > 解决方案 > 正则表达式:从路径中提取特定字符串

问题描述

我正在寻找从路径中提取特定字符串。

例如,我必须从文件名中提取由 (.) 分隔的第四个值。在以下示例中为“lm”。

例子:

/apps/java/logs/abc.defgh.ijk.lm.nopqrst.uvw.xyz.log
/apps2/java/logs/abc.defgh.ijk.lm.log

这将提取完整的文件名:

.*\/(?<name>.*).log

标签: regexrex

解决方案


您可以使用

.*\/(?:[^.\/]*\.){3}(?<value>[^.\/]*)[^\/]*$

或者,如果.log必须是扩展名:

.*\/(?:[^.\/]*\.){3}(?<value>[^.\/]*)[^\/]*\.log$

请参阅正则表达式演示详情

  • .*- 除换行符以外的任何零个或多个字符,尽可能多
  • \/- 一个/字符
  • (?:[^.\/]*\.){3}- 除了尽可能多的字符和一个点之外.,出现三个零个或多个字符/
  • (?<value>[^.\/]*)- 组“值”:零个或多个字符而不是.尽可能/多的字符
  • [^\/]*- 零个或多个字符/
  • \.log- 一个.log子串
  • $- 字符串结束。

推荐阅读