我刚刚熟悉了\W\S。现在我在演奏,看看他们的行为举止,并用手风琴试了一下:

> s="abd12 de 5t6"
=> "abd12 de 5t6"  #understood
> /\W/ =~ s
=> 5               #understood
> /\W\S/ =~ s
=> 5               #Confusion(A)
> /\S\W/ =~ s
=> 4               #Confusion(B)
> /\S/ =~ s
=> 0               #understood
>

Part-APart-B中运行的逻辑,将输出设为54只是想澄清我的想法。inPart-A5表示anon-word character,但也不是。
我只想知道a non- white space charater如何处理IRB中的这些语句?
谢谢

最佳答案

当正则表达式中有\W\S时,您实际上是在说:“在字符串中找到一个匹配项,其中一个字符是非单词字符,后跟一个非空格字符。”
Confusion A中,第一个非单词字符是第一个空格(在索引5处)。紧接着的下一个字符是d,它是一个非空格字符这是一个匹配项,因此返回5,因为这是匹配开始的索引。
同样,对于\S\W来说,第一个非空格字符是a,但是后面紧跟着b这是一个单词字符,所以匹配还不起作用。一旦它到达2(位置4),它将匹配一个非空格字符,后面跟着一个非单词字符的空格。

10-08 04:38