正则表达式是什么意思?
我检查了文档,找不到[\w-]
含义。 谁能告诉我[\w-]
在Ruby中意味着什么?
方括号[]
表示字符类 。 一个字符类将匹配其中的任何内容。
\w
是一个名为“单词字符”的特殊类。 它是[a-zA-Z0-9_]
简写,因此它将匹配:
-
az
(全小写字母) -
AZ
(全部大写字母) -
0-9
(所有数字) -
_
(下划线)
你要问的课程[\w-]
是一个由\w
和-
组成的课程。 所以它将匹配上面的列表,加上连字符( -
)。
正如所写, [\w-]
,这个正则表达式将匹配单个字符,只要它在上面的列表中,或者是破折号。
如果要在末尾添加量词,例如[\w-]*
或[\w-]+
,那么它将匹配以下任何字符串:
fooBar9 foo-Bar9 foo-Bar-9 -foo-Bar---9abc__34ab12d
它会部分匹配这些:
foo,Bar9 # match 'foo' - the ',' stops the match -foo-Bar---9*bc__34ab12d # match '-foo-Bar---9', the '*' stops the match
\w Any word character (letter, number, underscore)
以下是我认为它正在做的事情:转到Rubular并尝试如下:
regex_1 /\w-/
String : f-oo
regext_1将仅匹配f-
并将停在右边-
忽略任何\w
..字符串oo
的其余部分
鉴于:
regex_2 /[\w-]/
string : f-oo
regex_2将匹配整个字符串加上特殊字符 – .. f-oo
..另外,测试了一个字符串就像f-1oo
,第二个正则表达式在f-
停止了匹配。因此, -
后跟一个\d
==========
我相信[]的重点是在前后继续匹配-
。 以下是我从irb.
尝试的一些变化irb.
irb(main):004:0> "blah-blah".scan(/\w-/) => ["h-"] irb(main):005:0> "blah-blah".scan(/[\w-]/) => ["b", "l", "a", "h", "-", "b", "l", "a", "h"] irb(main):006:0> "blah-blah".scan(/\w-\w/) => ["hb"] irb(main):007:0> "blah-blah".scan(/\w-\w*$/) => ["h-blah"] irb(main):008:0> "blah-blah".scan(/\w*-\w*$/) => ["blah-blah"]