【问题标题】:What regex expression is best for extracting windows file name and file path?什么正则表达式最适合提取 Windows 文件名和文件路径?
【发布时间】:2019-03-19 20:36:07
【问题描述】:

创建一个正则表达式以将“新进程名称”的两个部分提取为文件路径和文件名。 请注意,在此示例中:

Process Information:
New Process ID:     0x8609
New Process Name:   C:\Windows\System32\example_c.exe
New Process Name:   D:\Intel\Logs\User\Tom Warner\logs.txt
  1. 有两个目录
  2. 文件位于 C 盘,且目录名或文件名均不包含空格

但是,其他日志样本可以在任何盘符中包含任意数量的文件路径。在 Windows 中,目录和文件名可以包含空格,并且可以用引号封装。确保您的正则表达式可以捕获任何这些情况。

这是我想出的表达方式。我能够匹配 file_path,但我没有任何运气匹配 file_name。应该使用什么表达式来匹配文件名和文件路径

New Process Name:\t+(?<file_path>\w:*[\\\S|*\S]?.*$).*?(?<file_name>[\w-]+?(?=\.))

【问题讨论】:

  • “文件在 C 盘,目录名或文件名都不包含空格”,但您示例中的第二个目录在 D 盘上并包含空格。你是说模式应该只匹配符合这些条件的文件路径?
  • file_path 正则表达式有效。不是文件名正则表达式
  • 在那个 regex101 链接中,&lt;file_name&gt; 组不包含除标签以外的任何模式,因此它不会捕获任何内容。
  • 我向您展示了文件路径有效。这是完整的表达式regex101.com/r/5J6ZLh/3

标签: regex regex-group splunk


【解决方案1】:
New Process Name:\t+(?<file_path>\w:.*?)(?<file_name>[^\\]+)$

(?&lt;file_path&gt;\w:.*?创建组名file_path


\w: 匹配驱动器号。 Windows 驱动器路径通常是字母


.*? 匹配驱动器号之后的所有内容


(?&lt;file_name&gt;[^\\]+)$ 创建组名 file_name [^\\]+表示不等于 \,这允许正则表达式接收所有信息,直到看到最后一个 \

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多