2014-08-29 41 views
0

我沒有在Java中,下面的正則表達式:Java的正則表達式爲xml

(^(?!\\s+$).*[^\\/:*?\"<>|]+(\\.(?i)(txt|rtf|doc|docx|htm|html|pdf))$) 

但我需要在一個XML模式來使用它,所以我已經改變了:

(^(?!\s+$).*[^\/:*?\&quot;&lt;&gt;|]+(\.(?i)(txt|rtf|doc|docx|htm|html|pdf))$) 

但它的版本正在接受未列出擴展名的文件。怎麼了?

+0

你爲什麼不使用任何XML解析API? – Braj 2014-08-29 19:11:41

+1

'; char類中的&lt;並不意味着字符串';&lt'。這意味着匹配;或者或者l或者t – 2014-08-29 19:12:22

+1

對所有使用正則表達式來解析XML的帖子的強制性評論:http://stackoverflow.com/a/1732454/18157 – 2014-08-29 19:19:50

回答

2

您的正則表達式不應與任何內容匹配:對於開始,「^」和「$」不是XSD正則表達式方言中的元字符,它們與文字「^」和「$」字符匹配。 XSD正則表達式不允許使用其他許多構造。但是,您可能正在使用像Microsoft這樣的模式處理器,而不是遵循W3C規範。

如果您描述了您的需求,而不是通過逆向工程複雜的正則表達式來要求我們完成工作,那對我們來說會更容易。不要忘記,你可以指定多個模式。如果你只是想需要指定一個擴展名,只需使用

.*\.(txt|rtf|doc|docx|htm|html|pdf)