我正在使用Ruby來執行簡單的子字符串類型匹配。我試圖理解爲什麼會發生以下情況:正則表達式查詢
irb(main):024:0> puts "match" if "foo" =~ /foo/
match
=> nil
irb(main):025:0> puts "match" if "foo" =~ /foo,/
=> nil
這怎麼能正則表達式進行修改,這樣,如果搜索標準的任何部分「富」,相匹配的匹配時?
我正在使用Ruby來執行簡單的子字符串類型匹配。我試圖理解爲什麼會發生以下情況:正則表達式查詢
irb(main):024:0> puts "match" if "foo" =~ /foo/
match
=> nil
irb(main):025:0> puts "match" if "foo" =~ /foo,/
=> nil
這怎麼能正則表達式進行修改,這樣,如果搜索標準的任何部分「富」,相匹配的匹配時?
你有你比較落後:
"foo".match(/foo,/) # See if "foo" matches the pattern "foo,"
# => nil
"foo,".match(/foo/) # See if "foo," matches the pattern "foo"
# => #<MatchData "foo">
的=~
操作有點歷史已經跌出的風格,因爲它不言自明。
您可以使用字符串的掃描方法,並通過您想檢查的正則表達式。
1.9.3p194 :008 > puts "match" if "foo".scan(/foo,/)
match
=> nil
這沒有任何意義。 'scan'將總是返回一個數組,甚至是一個空數組,在這種情況下。 – tadman
當更多直接的正則表達式檢查可用時,它也是'scan'的一個糟糕用法。 –
你的第一個正則表達式有什麼問題? – oldergod
我想你可能會混淆是哪個字符串被匹配,哪個是正則表達式。 /之間的位是正則表達式。 –