2

我刚刚熟悉\Wand \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-A并将Part-B输出作为54。只是想在那里澄清我的概念。InPart-A 5表示 anon-word character但那也不是a non- white space charater

我只是想知道如何IRB对待这样的陈述confusion - A and B

谢谢

4

1 回答 1

2

当你\W\S在你的正则表达式中时,你基本上是在说:“在字符串中找到一个匹配,其中一个字符是一个非单词字符,后跟一个非空格字符。”

Confusion A第一个非单词字符中是第一个空格(在索引 5 处)。紧随其后的下一个字符d是非空格字符。这是一场比赛,因此返回 5,因为那是比赛开始的索引。

同样,对于\S\W第一个非空格字符是a,但后面b是单词字符,所以匹配还不起作用。一旦它到达2(位置 4),它匹配一个非空格字符,然后是一个非单词字符的空格。

于 2013-01-17T07:25:19.700 回答