1

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

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

例子:

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

这将提取完整的文件名:

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

2 回答 2

1

您可以使用

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

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

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

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

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

你也可以试试

\/(?:\w+\.){3}(\w+)

或者

\/(?:\w+\.){3}(\w+).*\.log

在哪里:

  • \/- 匹配字符串从"/"
  • (?:\w+\.){3}- 匹配 3 次出现的"xyz."egabc.defgh.ijk.
  • (\w+)- 捕获字母数字字符串。这将包含目标值,例如"lm"
  • .*\.log- 选修的。匹配任何以.logeg结尾的字符集.nopqrst.uvw.xyz.log
于 2021-09-06T10:32:42.667 回答