如何使用 nom 解析直到找到字符串?

lok*_*rze 5 rust nom

使用 nom 解析字符串直到找到字符很容易。如何使用 nom 吞噬字符串直到分隔符或结尾?处理这个问题。

如何使用字符串(多个字符)而不是单个分隔符执行相同的操作?

例如,为了解析abchello,我想解析所有内容,直到hello找到为止。

oka*_*56k -1

这段代码返回正确的结果。

use nom::{IResult, bytes::complete::is_not};

fn parser(s: &str) -> IResult<&str, &str> {
  is_not("hello")(s)
}

fn main() {
    let result = parser("abchello");
    println!("{:?}", result);
}
Run Code Online (Sandbox Code Playgroud)

文档在这里

cargo run
-> Ok(("hello", "abc"))
Run Code Online (Sandbox Code Playgroud)