2011-01-09 94 views

回答

17

在大多數正則語言中,^\.^[.]將匹配一個前導點。

4

^與大多數語言中字符串的開頭匹配。這將匹配領先的.。你需要添加你的文件名錶達式。

^\. 

同樣,$將匹配字符串的末尾。

+2

「^ \。`不夠嗎?或者`^ \ .. +`?你的匹配的例子,但奇怪的事件'.1st_pwd`失敗。 – Dan 2011-01-09 18:25:37

+0

是的,[a-z]需要替換爲他的文件名的實際表達式。這只是一個例子。 – jasonbar 2011-01-09 18:27:02

1

這取決於你使用正則表達式庫位,但你可以做這樣的事情:

^\.\w+ 

^錨匹配字符串的開始,\.匹配文字句(因爲正則表達式中未轉義的.通常與任何字符相匹配),並且\w+匹配1個或多個「字」字符(字母數字加_)。

請參閱perlre文檔以獲取有關Perl樣式正則表達式及其語法的更多信息。

1

這取決於什麼字符是合法的文件名,這取決於操作系統和文件系統。

例如,Windows中的將是:

^\.[^<>:"/\\\|\?\*\x00-\x1f]+$

上述表達式意味着:

  • 匹配開始與文字字符.
  • 字符串隨後至少一個不是其中的一個(整個類的無效字符如下)

我用this作爲參考文件中不允許使用哪些字符。

1

要匹配字符串開始在Java點,你將不得不編寫一個簡單的表達

^\\..* 

^意味着正則表達式從字符串
\開始匹配。意味着它將以字符串文字「。」開頭。
*表示小數點後面將跟有0個或更多字符

1

您可能需要用\替換相應的語言轉義字符。然而,PowerShell的下我使用正則表達式是:^(\.)+\/

測試用例:

"../NameOfFile.txt" -match '^(\\.)+\\\/' 

作品,而

"_./NameOfFile.txt" -match '^(\\.)+\\\/' 

沒有。

當然,您可能會問,這裏發生了什麼?

\\.)搜索文字.,然後是+,它與前一個字符至少匹配一次或多次。

最後,\\\/確保它符合Window文件路徑。