使用正则表达式递归匹配点文件



我正在尝试编写一个正则表达式来递归匹配路径中的任何点文件。我从:

^[.]

但这与long/path/here/.dotfile的情况不符.此外,它本身与.匹配,这是不正确的。正则表达式应与.匹配,然后至少需要一个字符。

^/?(?:w+/)*(.w+)

^ - 表示字符串
的开头 /? - 在/
之前的可能性 (?:w+/)* - 非捕获组,用于查找子目录路径的 0-INF 匹配项(例如 long/path/.../(.w+) - 捕获组以获取以 . 开头的路径末尾的任何文件

正则表达式测试

我能想到的方式是 2 个正则表达式

  1. ^[.]匹配根目录中不以.开头的任何内容
  2. (?<=/).匹配与/后跟.匹配的任何子目录。

测试用例:

.foo
foo.a
/a/.foo
/a/foo.a
/.foo/.asdafsdf

@m_callens答案中,带有空格或破折号或非英语字符的路径将失败。

^/?(?:[^/]+/)*(.[^/]+)$

  • ^ - 匹配开始
  • /? - 0 或 1 /
  • (?:[^/]+/)*
    • * - 0 或更多
    • (?:) - 非捕获组
    • [^/]+/ - 1 个或多个不/,末尾有一个/
  • (.[^/]+) - 捕获组,1 个或多个未/ ,开头带有.
  • $ - 匹配结束

您可以在此处测试此正则表达式

/home/ddddd/hhhhh/gfg-u556u asdf 雪 、 asdf asdf/demo-project/demo- —— _ (1)-project new copy /src/imgs/ツ/.DS_Store

最新更新