如何为nom创建一个负向超前解析器?

例如,我想要解析"Hello",除非后面跟"world".等同的正则表达式将是hello(?! world).

我try 将condnotpeek解析器组合在一起

fn parser(input: &str) -> IResult<&str, &str> {
    cond(peek(not(tag(" world"))(input)), tag("hello"))(input)
}

但这并不像cond预期的那样,条件是bool而不是IResult.

推荐答案

试着用terminated()

terminated(tag("hello"), not(tag(" world")))

Rust相关问答推荐

Tauri tauri—apps/plugin—store + zustand

如何创建引用构造函数拥有的变量的对象?

两个相关特征的冲突实现错误

为什么reqwest以文本形式下载二进制文件?

如何在 struct 的自定义序列化程序中使用serde序列化_WITH

对于已经被认为是未定义行为的相同数据,纯粹存在`&;[u32]`和`&;mut[u32]`吗?

Trait bound i8:来自u8的不满意

考虑到Rust不允许多个可变引用,类似PyTorch的自动区分如何在Rust中工作?

Rust从关联函数启动线程

在 Rust 中用问号传播错误时对类型转换的困惑?

如何在 `connect_activate()` 之外创建一个 `glib::MainContext::channel()` 并将其传入?

使用占位符获取用户输入

将 &str 或 String 保存在变量中

go 重并堆积MPSC通道消息

全面的 Rust Ch.16.2 - 使用捕获和 const 表达式的 struct 模式匹配

使用 Rust 从 Raspberry Pi Pico 上的 SPI 读取值

我如何取消转义,在 Rust 中多次转义的字符串?

Rust 中的自动取消引用是如何工作的?

Rust 函数指针似乎被borrow 判断器视为有状态的

Rust,使用枚举从 HashMap 获取值