2017-01-23 67 views
0

我想寫一個正則表達式來遞歸地匹配路徑中的任何點文件。我開始於:使用正則表達式遞歸地匹配點文件

^[.] 

但這不符合long/path/here/.dotfile的情況。它本身也匹配.,這是不正確的。正則表達式應與.匹配,然後至少需要一個字符。

+0

究竟是應該在'長/路徑/這裏的例子要捕獲/ .dotfile'? –

+0

如果您只是使用「開始」功能並過濾「」,該怎麼辦?當你發現它? – squiguy

+0

你用來做正則表達式匹配的是什麼工具(和什麼語言?)? –

回答

1

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

^ - 表示字符串
\/?的開始 - 前述/
(?:\w+\/)*的可能性 - 非捕獲組來找到的子目錄路徑0-INF的匹配(例如long/path/.../(\.\w+) - 捕獲組以獲取以.開頭的路徑末尾的任何文件

Regex Test

+0

非常接近,但不處理'/ long/path/.dotfile'的情況。 – Justin

+0

@Justin修好了! –

+0

真棒,這正是我需要的。 – Justin

0

我能想到的辦法是2的正則表達式

  1. ^[\.]匹配在根目錄下任何不與.
  2. (?<=\/)\.比賽,一個/後跟一個.匹配任何子目錄啓動。

測試用例:

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