gpt4 book ai didi

grammar - 语法中空白方法 ws 的默认定义

转载 作者:行者123 更新时间:2023-12-02 16:54:40 26 4
gpt4 key购买 nike

根据the documentation ws 的默认定义语法中的方法是匹配零个或多个空白字符,只要该点不在单词内:

regex ws { <!ww> \s* }

这个定义与以下定义有什么区别:

regex ws { \s+ }

我想知道为什么零宽度断言 <!ww>使用而不是更简单的 \s+ ?我还注意到默认定义允许匹配零个空格,但是什么时候会真正发生呢?如果用 \s+ 不是更清楚吗而不是\s*

最佳答案

ww断言意味着有匹配 \w 的字符当前点的任一侧。 !反转它,意思是 <!ww>匹配:

  • 位于字符串的开头
  • 在字符串末尾
  • 当存在非 \w 时当前位置之前的字符(例如“+”和“a”之间)
  • 当存在非 \w 时当前位置之后的字符(例如“a”和“+”之间)

实际上,这意味着永远不能认为两个单词字符之间出现空格。但是,在非单词字符之间,或者单词字符与非单词字符之间,则可以考虑存在空格。

这符合我们可能希望解析的许多语言的需求。例如,考虑 ab+cd 。默认ws将匹配 + 的任一侧,但例如不会在标识符内匹配。

对于不适合的语言,只需覆盖默认值 ws 即可。满足该语言的任何需求。

关于grammar - 语法中空白方法 ws 的默认定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55461864/

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