gpt4 book ai didi

regex - 在 Ocaml 中拆分字符串 - 但不是在反斜杠转义分隔符时

转载 作者:行者123 更新时间:2023-12-01 12:48:45 24 4
gpt4 key购买 nike

目标:能够拆分以下字符串:"command/test\/escaped/"

进入如下List:["command", "test/escaped"]

当前正则表达式看起来像:

Str.split (Str.regexp "/") string_to_split;;

这太简单了,我需要在字符串前加上反斜杠来转义。

我试过这个:Str.regexp "((?!\\).)/" 但它不适用于 Ocaml 解析器产生:未捕获的异常失败(“正则表达式中的虚假\)”)

有什么想法吗?

我应该提一下,我注意到 Ocaml-parser 会自动转义字符串中的反斜杠,所以字符串如下:"foobar\/barfoo" 转换为 "foobar\\/barfoo"。所以也许有人真的想删除字符串中所有偶数编号的反斜杠。

最佳答案

您需要转义反斜杠两次:

  • 字符串内容一次
  • 一次用于正则表达式

所以正确的正则表达式应该是 Str.regexp "((?!\\\\).)/"

但是,该正则表达式将不起作用。

我建议改为使用其他 3 种解决方案:

  • 使用 match_beginning 等手动搜索和拆分,
  • 使用 '/' 字符进行简单拆分,并根据需要重组字符串,
  • 用另一种组合替换 \\/ 字符,例如 \\§(或其他不太可能出现在您希望处理的文本中的字符串),做您的拆分,然后在每个子字符串中进行反向替换(这次只将'§'替换为'/')。

最后一个可能是最快的,如果您在 "\\/" 中有一个很好的 '/' 替换字符。

关于regex - 在 Ocaml 中拆分字符串 - 但不是在反斜杠转义分隔符时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13897866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com