REGEX:从路径中提取特定字符串
REGEX: To extract particular string from path
我想从路径中提取特定的字符串。
例如,我必须从文件名中提取以 (.) 分隔的第 4 个值。在下面的例子中是“lm”。
示例:
/apps/java/logs/abc.defgh.ijk.lm.nopqrst.uvw.xyz.log
/apps2/java/logs/abc.defgh.ijk.lm.log
这将提取完整的文件名:
.*\/(?<name>.*).log
你可以使用
.*\/(?:[^.\/]*\.){3}(?<value>[^.\/]*)[^\/]*$
或者,如果 .log
必须是扩展名:
.*\/(?:[^.\/]*\.){3}(?<value>[^.\/]*)[^\/]*\.log$
见regex demo。 详情:
.*
- 除换行字符外的任何零个或多个字符,尽可能多
\/
- 一个 /
字符
(?:[^.\/]*\.){3}
- 除 .
和 /
之外的零个或多个字符出现次数尽可能多,以及一个点
(?<value>[^.\/]*)
- 组“值”:除 .
和 /
之外的零个或多个字符尽可能多
[^\/]*
- /
以外的零个或多个字符
\.log
- .log
子串
$
- 字符串结尾。
你也可以试试
\/(?:\w+\.){3}(\w+)
或者
\/(?:\w+\.){3}(\w+).*\.log
其中:
\/
- 匹配从 "/"
开始的字符串
(?:\w+\.){3}
- 匹配 3 次出现的 "xyz."
,例如abc.defgh.ijk.
(\w+)
- 捕获字母数字字符串。这将包含目标值,例如"lm"
.*\.log
- 可选。匹配任何以 .log
结尾的字符集,例如.nopqrst.uvw.xyz.log
我想从路径中提取特定的字符串。
例如,我必须从文件名中提取以 (.) 分隔的第 4 个值。在下面的例子中是“lm”。
示例:
/apps/java/logs/abc.defgh.ijk.lm.nopqrst.uvw.xyz.log
/apps2/java/logs/abc.defgh.ijk.lm.log
这将提取完整的文件名:
.*\/(?<name>.*).log
你可以使用
.*\/(?:[^.\/]*\.){3}(?<value>[^.\/]*)[^\/]*$
或者,如果 .log
必须是扩展名:
.*\/(?:[^.\/]*\.){3}(?<value>[^.\/]*)[^\/]*\.log$
见regex demo。 详情:
.*
- 除换行字符外的任何零个或多个字符,尽可能多\/
- 一个/
字符(?:[^.\/]*\.){3}
- 除.
和/
之外的零个或多个字符出现次数尽可能多,以及一个点(?<value>[^.\/]*)
- 组“值”:除.
和/
之外的零个或多个字符尽可能多[^\/]*
-/
以外的零个或多个字符
\.log
-.log
子串$
- 字符串结尾。
你也可以试试
\/(?:\w+\.){3}(\w+)
或者
\/(?:\w+\.){3}(\w+).*\.log
其中:
\/
- 匹配从"/"
开始的字符串
(?:\w+\.){3}
- 匹配 3 次出现的"xyz."
,例如abc.defgh.ijk.
(\w+)
- 捕获字母数字字符串。这将包含目标值,例如"lm"
.*\.log
- 可选。匹配任何以.log
结尾的字符集,例如.nopqrst.uvw.xyz.log