如何解决正则表达式“\|\|”在 OCaml 中错误地匹配了字符串 ";;"
我在 OCaml 中使用 Str.regexp 来检测双分号或或和和符号等,但很多正则表达式没有按预期工作。例如,
Str.string_match (Str.regexp "\|\|") ";;" 0
返回真。你必须转义像'|'这样的字符,所以我用了“\|\|”作为我的正则表达式而不是“||”。不过,我听说你可能要逃两次,然后写“\\|\\|”在 Ocaml 中,但这也不起作用。那我该怎么办? Rubular 认为 Regex 应该可以工作,但这是 Ocaml 而不是 Ruby,所以我可能错过了一些细微的语言差异。
解决方法
没有(被广泛接受的)正则表达式标准。虽然出现了许多常见的约定,但每个实现都是不同的。因此,您应该始终引用 the documentation of the implementation you're using。
如果您想要一个提供更传统语法的实现,我建议您使用 ocaml-re
,它是纯 OCaml 中的正则表达式实现,提供多种不同语法的选择,Perl、Posix 和 Emacs 以及作为 PCRE 的一个子集。
原来是正则表达式
do {
if let postData = data {
let decodedData = try JSONDecoder().decode(Feed.self,from: postData)
DispatchQueue.main.async {
self.post = decodedData.posts
}
} else {
print("No data")
}
} catch {
print(error)
}
会起作用。通常,'|'代表 or 和需要转义以代表文字条,但在 Ocaml 中似乎正好相反。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。