Ruby 正则表达式[\w-]是什么意思?

Ruby 正则表达式[\w-]是什么意思?,ruby,regex,Ruby,Regex,我查看了文档,找不到[\w-]的含义。有人能告诉我在Ruby中[\w-]是什么意思吗 \w Any word character (letter, number, underscore) 以下是我认为它正在做的事情:转到并按如下方式尝试: 正则表达式1/\w-/ String : f-oo regext_1将只匹配f-,并将在-处停止,忽略任何\w。。字符串的其余部分oo 鉴于: 正则表达式2/[\w-]/ string : f-oo regex_2将匹配整个字符串加上特殊字符-f-o

我查看了文档,找不到
[\w-]
的含义。有人能告诉我在Ruby中
[\w-]
是什么意思吗

\w  Any word character (letter, number, underscore)
以下是我认为它正在做的事情:转到并按如下方式尝试:

正则表达式1
/\w-/

String : f-oo 
regext_1将只匹配
f-
,并将在
-
处停止,忽略任何
\w
。。字符串的其余部分
oo

鉴于:

正则表达式2
/[\w-]/

string : f-oo
regex_2将匹配整个字符串加上特殊字符-<代码>f-oo

。。另外,测试了字符串类似于
f-1oo
的情况,第二个正则表达式在
f-
处停止匹配,因此,
-
后面跟着一个
\d

==========

我相信[]的全部要点是在
-
之前和之后继续匹配。以下是我从
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/)  
=> ["h-b"]
irb(main):007:0> "blah-blah".scan(/\w-\w*$/)  
=> ["h-blah"]
irb(main):008:0> "blah-blah".scan(/\w*-\w*$/)  
=> ["blah-blah"]

方括号
[]
表示字符类。字符类将匹配其中的任何内容

\w
是一个称为“单词字符”的特殊类。它是
[a-zA-Z0-9.]
的缩写,因此它将匹配:

  • a-z
    (所有小写字母)
  • A-Z
    (所有大写字母)
  • 0-9
    (所有数字)
  • (下划线)
您所询问的类,
[\w-]
,是一个由
\w
-
组成的类。因此它将匹配上面的列表,加上连字符(
-

正如所写的那样,
[\w-]
,这个正则表达式将匹配单个字符,只要它在上面的列表中,或者是破折号

如果要在末尾添加一个量词,例如
[\w-]*
[\w-]+
,则它将匹配以下任何字符串:

fooBar9
foo-Bar9
foo-Bar-9
-富吧-9abc_uuu34AB12D
它将部分匹配这些:

foo,Bar9#匹配“foo”-停止匹配
-foo-Bar--9*bc_uu34ab12d#match'-foo-Bar--9',该'*'停止比赛

关闭-
[]
的目的是扩展
\w
的含义,使其也包括
-
字符。谢谢,是的,[]是在字母数字符号或连字符之前和之后找到匹配的字符