Rust regex crate说:
此crate提供了正则表达式的本机实现,它在语法和实现方面都基于RE2。值得注意的是,未提供反向引用和任意前瞻/后瞻断言。
在撰写本文时,“Rust regex lookbehind”回来后没有DuckDuckGo的结果。
我以前从来没有解决过这个问题,但我可以想到两种方法:
.captures()
上迭代我想要用作lookbehind的模式。这不仅是一个巨大的痛苦,似乎很多边缘案件都会让我感到震惊。有没有更好的方法来解决这个问题?
给出如下字符串:
"Fish33-Tiger2Hyena4-"
我想提取["33-", "2", "4-"]
iff每个跟随像"Fish"
这样的字符串。
如果没有一个激励性的例子,很难以一般的方式回答你的问题。在许多情况下,您可以使用两个正则表达式来代替环视运算符 - 一个用于搜索候选项,另一个用于生成您感兴趣的实际匹配项。但是,这种方法并不总是可行的。
如果你真的卡住了,那么你唯一的选择是使用支持这些功能的正则表达式库。 Rust绑定了其中几个:
还有一个更实验的库fancy-regex,它建立在regex
箱子的顶部。
如果你有一个正则表达式应用程序,你有一个已知的一致模式,你想用作lookbehind,另一个解决方法是使用.splits()
与lookbehind匹配模式作为参数(类似于the other answer中提到的想法)。这至少会给你一些字符串,这些字符串与你想要看到的匹配相邻。
我不知道性能保证正则表达式,但这至少意味着你可以在拆分结果上进行N次(对于N次拆分),或者根据需要在连接结果上进行一次无外观的正则表达式匹配。