我只是熟悉\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-A
和Part-B
中运行的逻辑是什么,以便将输出设为5
和4
。只想在那里清除我的概念。在Part-A
5
中表示non-word character
,但也不是a non- white space charater
。
我只想知道IRB
如何confusion - A and B
处理此类陈述?
由于
答案 0 :(得分:2)
当你的正则表达式中有\W\S
时,你基本上是这样说:“在字符串中查找匹配字符为非字符的匹配项,后跟非太空人物。“
在Confusion A
中,第一个非单词字符是第一个空格(在索引5处)。紧随其后的下一个字符是d
,它是非空格字符。这是一场比赛,因此返回5,因为那是比赛开始的指数。
同样,对于\S\W
,第一个非空格字符为a
,但后跟b
这是一个单词字符,因此匹配不起作用。一旦到达2
(位置4),它匹配非空格字符,后面跟着一个非单词字符的空格。