【发布时间】:2019-04-01 19:01:18
【问题描述】:
根据the documentation,语法中ws方法的默认定义是匹配零个或多个空白字符,只要该点不在单词内:
regex ws { <!ww> \s* }
这个定义和下面的有什么区别:
regex ws { \s+ }
我想知道为什么使用零宽度断言<!ww> 而不是更简单的\s+?我还注意到默认定义允许匹配零个空格,但是什么时候会真正发生呢?如果使用\s+而不是\s*会不会更清楚?
【问题讨论】:
-
好的,那么默认的
ws将匹配非单词字符和非空格的连续字符(如表情符号)。例如:perl6 -e 'my $str="\c[carrot]\c[potato]"; say $str.split(/<!ww>\s*/).elems'给出 4。这是合理的行为吗? -
Larry 认为这是合理的 默认 行为。这个想法是它适用于大多数典型的语法,如果你想要别的东西,你只需定义你自己的
ws规则。