加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在Rust正则表达式中模拟lookbehind行为最明智的方法是什么?

发布时间:2020-12-14 02:29:40 所属栏目:百科 来源:网络整理
导读:Rust regex crate声明: This crate provides a native implementation of regular expressions that is heavily based on RE2 both in syntax and in implementation. Notably,backreferences and arbitrary lookahead/lookbehind assertions are not provi
Rust regex crate声明:

This crate provides a native implementation of regular expressions that is heavily based on RE2 both in syntax and in implementation. Notably,backreferences and arbitrary lookahead/lookbehind assertions are not provided.

在撰写本文时,“Rust regex lookbehind”回来后没有DuckDuckGo的结果.

我以前从来没有解决过这个问题,但我可以想到两种方法:

方法1(前进)

>为我想用作lookbehind的模式迭代.captures().
>匹配我想要在捕获之间匹配的东西. (向前)

方法2(反向)

>匹配我真正想要匹配的模式.
>对于每个匹配,查找lookbehind模式,直到上一次捕获的结束字节或字符串的开头.

这不仅是一个巨大的痛苦,似乎很多边缘案件都会让我感到震惊.有没有更好的方法来解决这个问题?

给出如下字符串:

“Fish33-Tiger2Hyena4-”

我想提取[“33-”,“2”,“4-”] iff每个都跟随像“Fish”这样的字符串.

如果没有一个激励性的例子,很难以一般的方式回答你的问题.在许多情况下,您可以使用两个正则表达式来代替环视运算符 – 一个用于搜索候选项,另一个用于生成您感兴趣的实际匹配项.但是,这种方法并不总是可行的.

如果你真的卡住了,那么你唯一的选择是使用支持这些功能的正则表达式库. Rust绑定了其中几个:

> PCRE
> PCRE2
> Oniguruma

还有一个更实验的库,fancy-regex,它建立在正则表达式的顶部.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读