regex - 正则表达式:从路径中提取特定字符串
问题描述
我正在寻找从路径中提取特定字符串。
例如,我必须从文件名中提取由 (.) 分隔的第四个值。在以下示例中为“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$
请参阅正则表达式演示。详情:
.*
- 除换行符以外的任何零个或多个字符,尽可能多\/
- 一个/
字符(?:[^.\/]*\.){3}
- 除了尽可能多的字符和一个点之外.
,出现三个零个或多个字符/
(?<value>[^.\/]*)
- 组“值”:零个或多个字符而不是.
尽可能/
多的字符[^\/]*
- 零个或多个字符/
\.log
- 一个.log
子串$
- 字符串结束。
推荐阅读
- python - 具有 MultiIindex 和 .combine_first 的 Pandas DataFrame 无法按预期工作
- r - R 中的新 df 从现有的大 df 中提取
- azure-devops - 以前版本的 Azure 管道构建工件
- mysql - 带有全文索引的 MySQL 索引提示
- python - 如何从程序中的任何位置访问和修改 configparser?
- c - STM32 F429 TIM1 捕捉比较总是零
- haskell - (Num (Int -> Int)) 没有因使用句法否定而产生的实例
- google-apps-script - 从已部署的网络应用程序下载创建的 Google 文档(Google Apps 脚本)
- flutter - 将回调函数作为参数传递给小部件,同时保持 Lint 规则“argument_type_not_assignable”
- c# - 我需要在 wpf 程序的主窗口之前添加一个“登录”屏幕