2011-07-15 63 views
0

我有黑莓6黑莓6的Regex

的Mozilla/5.0中的一個的正則表達式(黑莓; U;黑莓( 'DEVICENAME' \ W +); EN-US)爲AppleWebKit/534.11 +(KHTML,例如Gecko)版本/(?'version'(?'major'\d+)(.(?'minor'\d+)?)\w*)Mobile Safari/534.11 +

但它似乎不匹配這個字符串:

的Mozilla/5.0(黑莓; U;黑莓AAAA; EN-US)爲AppleWebKit/534.11 +(KHTML,例如Gecko)版本/ XXXX移動版Safari/534.11 +

有什麼不對?這是.NET 4.0的瀏覽器定義文件。

注意:出於某種原因,編輯器不會顯示我的轉義字符。所有的/都逃脫了。

回答

0

假設你輸入的字符串實際上包含的數字版本,喜歡的6.5.4.3代替X.X.X.X,下面的正則表達式匹配:

@"Mozilla\/5.0 \(BlackBerry; U; BlackBerry (?'deviceName'\w+); en-US\) AppleWebKit\/534\.11\+ \(KHTML, like Gecko\) Version\/(?'version'(?'major'\d+)(.(?'minor'\d+)?)[\.\w]*) Mobile Safari\/534\.11\+" 

除了有逃避所有/().+字符,您正則表達式不匹配版本號的最後兩個元素;因爲\w字符類不會嵌套週期字符。