1

由于正前瞻( ),Rust 的默认创建[^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])不支持正则表达式:regex?=

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
regex parse error:
    [^a-z0-9%*][a-z0-9%]{3,}(?=[^a-z0-9%*])
                            ^^^
error: look-around, including look-ahead and look-behind, is not supported
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
)

重写或使其工作的最佳方法是什么?

我找到了fancy-regexcrate,但我想避免只为一个缺失的功能使用两个 crate(或者更喜欢花哨而不是默认)。

PS。这里至少是一个预期匹配示例

4

1 回答 1

2

将您当前的匹配模式放入捕获组,并匹配(但不捕获)当前在前瞻中的术语:

([^a-z0-9%*][a-z0-9%]{3,})(?:[^a-z0-9%*]|$)
于 2021-02-09T06:04:38.743 回答