我正在研究F#中的一個次要項目,它涉及將現有的C#代碼移植到F#,而且我似乎遇到了兩種語言之間處理正則表達式的差異(我正在發佈這希望找出我只是做錯了什麼)。代理對檢測失敗
這個次要功能只是使用正則表達式技巧here簡單地檢測代理對。下面是當前實現:
let isSurrogatePair input =
Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]")
如果我然後執行它與已知的代理對這樣的:
let result = isSurrogatePair "野"
printfn "%b" result
我在FSI窗口得到false
。
如果我使用等效C#:
public bool IsSurrogatePair(string input)
{
return Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]");
}
而同樣的輸入值,I(正確)獲得true
回來。
這是一個真正的問題?我只是在我的F#實現中做錯了什麼?