我檢查了文檔,並且找不到[\w-]
的含義。誰能告訴我什麼[\w-]
在Ruby中的含義?正則表達式[ w-]是什麼意思?
回答
\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(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'的含義以包含'-'字符。 –
謝謝,是的,[]是找到匹配\ w之前和之後 - – zee
的方括號試圖[]
表示一個字符類。一個角色類將會匹配裏面的任何東西。
\w
是一個叫做「單詞字符」的特殊類。這是[a-zA-Z0-9_]
簡寫,所以它會匹配:
a-z
(小寫字母)A-Z
(全部爲大寫字母)0-9
(所有數字)_
(下劃線)
您提問的課程[\w-]
是由\w
和0123組成的類。所以它會匹配上面的列表,加上連字符(-
)。
和正確的寫法一樣,[\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
字母數字符號或連字符 – vol7ron