如何使用FastParse准确匹配'n'给定的字符

Rob*_*ley 3 scala parser-combinators fastparse

FastParse解析器组合子Scala库给你的.rep(n)"重复"的方法,让您创建一个新的解析器,试图解析givenParser n 或更多次.如果我想完全 n匹配,那么规范的方法是什么?

在我的情况下,我想解析一个40个字符的Git提交ID - 如果它超过40个字符,那不是一个提交ID,它不应该是匹配.

到目前为止,我在docs中找到的最接近的例子是:

val unicodeEscape = P( "u" ~ hexDigit ~ hexDigit ~ hexDigit ~ hexDigit )
Run Code Online (Sandbox Code Playgroud)

...通过简单的重复匹配4个字符(40个字符的提交ID详细).

这些是解析器组合器,而不是正则表达式,答案就是这样的\p{XDigit}{40}.

ljd*_*ljd 6

由于此提交已关闭该问题,因此rep支持max关键字参数.它现在还支持完全关键字参数.

hexdigit.rep(exactly = 40)
Run Code Online (Sandbox Code Playgroud)