我有一個正在使用的RegEx從iOS用戶代理字符串獲取版本號。正則表達式在Javascript中返回一個匹配,但不是C#
我正則表達式爲/OS ([0-9_]+)/g
,並且它被應用到用戶代理字符串像Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53
我在網上正則表達式的工具進行了測試,它聲稱它應該工作,我打算。我的測試是here。我用Javascript試過了,我得到了一場比賽。然後我把它放到C#中,我沒有找到匹配。我使用Regex.Match(...)
:
string uaString = @"Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X; en-us) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A465 Safari/9537.53";
bool matched = Regex.IsMatch(uaString, @"/(?:OS)([0-9_]+)/g"); // is false
Match match = Regex.Match(uaString, @"/(?:OS)([0-9_]+)/g");
string osVersion = match.Groups[0].Value; // is ""
我不是正則表達式非常熟悉,並不能看到我在做什麼錯。我讀過的大多數頁面都是關於從C#到JS的問題,以及由於JS不支持C#所做的一切而造成的問題。兩者之間的語法會有差異嗎?
嘗試使用http://regexhero.net/ – 2014-09-11 10:39:08
調試您的正則表達式Yuliam的答案和dotnetfiddle.net都非常有幫助。希望我在幾個小時前找到他們:) – 2014-09-11 10:49:35