gpt4 book ai didi

dart - 如何在PetitParser Dart中的正则表达式中匹配 `\b`?

转载 作者:行者123 更新时间:2023-12-03 02:58:54 25 4
gpt4 key购买 nike

\b是正则表达式中的“世界边界”,如何在PetitParserDart中将其匹配?

我试过了:

pattern("\b") & word().plus() & pattern("\b")

但这不符合任何条件。我想要的上方模板是正则表达式中的 \b\w+\b

我的真正问题是:

我只想将 render视为 token ,除非它是一个独立的单词。

以下是正确的:
render
to render the page
render()
@render[it]

以下不是:
rerender
rendering
render123

我在这里不能使用 string("render").trim(),因为它会占用周围的空间。所以我想要 \b,但PetitParserDart似乎不支持它。

最佳答案

pattern返回的解析器仅查看单个字符。请看tests的一些示例。

正则表达式\b\w+\b的第一近似为:

word().neg() & word().plus() & word().not()

但是,这在解析的字符串的开头需要一个非单词字符。您可以通过删除 word().neg()并确保调用方在有效位置启动来避免此问题。

您描述的问题在使用解析表达式语法时很常见。通常,您可以通过相应地对选项进行重新排序,或者使用诸如 and()not()之类的逻辑谓词来解决该问题。例如, Smalltalk grammar如下定义 token true:
def('trueToken', _token('true') & word().not());

这样可以避免 token 解析器意外使用名为 trueblood的变量的一部分。

关于dart - 如何在PetitParser Dart中的正则表达式中匹配 `\b`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17428108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com