Parsing 解析器表达式语法-如何匹配除单个字符以外的任何字符串?

Parsing 解析器表达式语法-如何匹配除单个字符以外的任何字符串?,parsing,rust,grammar,peg,pest,Parsing,Rust,Grammar,Peg,Pest,我想写一个匹配文件系统路径的PEG。path元素是posix linux中除/之外的任何字符 PEG中有一个表达式可以匹配任何字符,但我不知道如何匹配除一个字符以外的任何字符 我使用的peg解析器是针对锈菌的有害程序。您可以在中找到有害程序语法,特别是其中有一个“负面展望” !a-如果a不匹配而未取得进展,则匹配 这样你就可以写作了 !["/"] ~ any 例如: // cargo-deps: pest #[macro_use] extern crate pest; use pest::*

我想写一个匹配文件系统路径的PEG。path元素是posix linux中除
/
之外的任何字符

PEG中有一个表达式可以匹配任何字符,但我不知道如何匹配除一个字符以外的任何字符


我使用的peg解析器是针对锈菌的有害程序。

您可以在中找到有害程序语法,特别是其中有一个“负面展望”

!a
-如果a不匹配而未取得进展,则匹配

这样你就可以写作了

!["/"] ~ any
例如:

// 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());
}