我是一個完整的Reg-exp noob,所以請耐心等待。試圖谷歌這一點,但還沒有找到它。正則表達式:匹配以點(。)開頭的文件名?
什麼是寫一個以點開頭的正則表達式匹配文件的適當方式,如.buildpath
或.htaccess
?
非常感謝!
我是一個完整的Reg-exp noob,所以請耐心等待。試圖谷歌這一點,但還沒有找到它。正則表達式:匹配以點(。)開頭的文件名?
什麼是寫一個以點開頭的正則表達式匹配文件的適當方式,如.buildpath
或.htaccess
?
非常感謝!
在大多數正則語言中,^\.
或^[.]
將匹配一個前導點。
^
與大多數語言中字符串的開頭匹配。這將匹配領先的.
。你需要添加你的文件名錶達式。
^\.
同樣,$
將匹配字符串的末尾。
這取決於你使用正則表達式庫位,但你可以做這樣的事情:
^\.\w+
的^
錨匹配字符串的開始,\.
匹配文字句(因爲正則表達式中未轉義的.
通常與任何字符相匹配),並且\w+
匹配1個或多個「字」字符(字母數字加_
)。
請參閱perlre文檔以獲取有關Perl樣式正則表達式及其語法的更多信息。
這取決於什麼字符是合法的文件名,這取決於操作系統和文件系統。
例如,Windows中的將是:
^\.[^<>:"/\\\|\?\*\x00-\x1f]+$
上述表達式意味着:
.
我用this作爲參考文件中不允許使用哪些字符。
要匹配字符串開始在Java點,你將不得不編寫一個簡單的表達
^\\..*
^意味着正則表達式從字符串
\開始匹配。意味着它將以字符串文字「。」開頭。
*表示小數點後面將跟有0個或更多字符
您可能需要用\
替換相應的語言轉義字符。然而,PowerShell的下我使用正則表達式是:^(\.)+\/
測試用例:
"../NameOfFile.txt" -match '^(\\.)+\\\/'
作品,而
"_./NameOfFile.txt" -match '^(\\.)+\\\/'
沒有。
當然,您可能會問,這裏發生了什麼?
(\\.
)搜索文字.
,然後是+
,它與前一個字符至少匹配一次或多次。
最後,\\\/
確保它符合Window文件路徑。
「^ \。`不夠嗎?或者`^ \ .. +`?你的匹配的例子,但奇怪的事件'.1st_pwd`失敗。 – Dan 2011-01-09 18:25:37
是的,[a-z]需要替換爲他的文件名的實際表達式。這只是一個例子。 – jasonbar 2011-01-09 18:27:02