2015-06-04 109 views
0

我有一個路徑,需要編寫一個正則表達式來過濾Common-io庫的路徑。路徑驗證的正則表達式?

的路徑不應包含:

  • req/com/res
  • res/com/req
  • req/al/res
  • res/al/req
  • _svn

和PA th應該以.xml結尾。

FileUtils.listFiles(aFile, new RegexFileFilter("^(.*?)"), TrueFileFilter.INSTANCE) 

如果我這樣做,這將返回所有的xmls。

我對正則表達式沒有任何意見;有人可以給一個想法如何做到這一點?

+0

'^(?!。*(?: req \ /(?: com | al)\/re [sq] | _svn))。* \。xml $'? –

+0

歡迎來到Stack Overflow。請儘快閱讀[關於]頁面。 (a)你應該學習正則表達式的基礎知識。 (b)您應該識別您使用的主機語言並在標籤中使用它。 (c)你應該展示你的嘗試。你的正則表達式允許任何事情通過;它不檢查'xml'或任何你的verboten字符串。我們會幫助人們真誠地嘗試解決他們的問題;我們更不情願幫助那些不這樣做的人。 –

+0

@JonathanLeffler當然,我會按照說明。謝謝你的建議。 – Same

回答

0

您可以使用以下正則表達式:

​​

demo

(?i)模式使得它不區分大小寫。如果要使搜索區分大小寫,請將其刪除。 (?!.*(?:re[qs]/(?:com|al)/re[sq]|_svn))模式確保我們不允許任何路徑內的禁止字符串。

如果你要爲全字帳戶,添加\b

^(?i)(?!.*\\b(?:re[qs]/(?:com|al)/re[sq]|_svn)\\b).*\\.xml$ 

見Java風格的正則表達式another demo

注意我們不需要逃避/,我們必須雙精度轉義特殊字符。