我正在从事 F# 中的一个小型项目,该项目涉及将现有 C# 代码移植到 F#,我似乎遇到了两种语言之间处理正则表达式的方式的差异(我发布这个希望发现我是只是做错了什么)。
这个次要函数使用此处概述的正则表达式技巧简单地检测代理对。这是当前的实现:
let isSurrogatePair input =
Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]")
如果我然后对一个已知的代理对执行它,如下所示:
let result = isSurrogatePair "野"
printfn "%b" result
我进入false
FSI 窗口。
如果我使用等效的 C#:
public bool IsSurrogatePair(string input)
{
return Regex.IsMatch(input, "[\uD800-\uDBFF][\uDC00-\uDFFF]");
}
和相同的输入值,我(正确)得到true
返回。
这是一个真实的问题吗?我只是在我的 F# 实现中做错了吗?