你可以在https://docs.rs/pest/0.4.1/pest/macro.grammar.html#syntax中找到PEST语法,特别是有一个"负向前瞻"
!a- 匹配如果a不匹配而没有取得进展
所以你可以写
!["/"] ~ any
Run Code Online (Sandbox Code Playgroud)
例:
// cargo-deps: pest
#[macro_use] extern crate pest;
use pest::*;
fn main() {
impl_rdp! {
grammar! {
path = @{ soi ~ (["/"] ~ component)+ ~ eoi }
component = @{ (!["/"] ~ any)+ }
}
}
println!("should be true: {}", Rdp::new(StringInput::new("/bcc/cc/v")).path());
println!("should be false: {}", Rdp::new(StringInput::new("/bcc/cc//v")).path());
}
Run Code Online (Sandbox Code Playgroud)