當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Regexp.rxp =~ str用法及代碼示例


本文簡要介紹ruby語言中 Regexp.rxp =~ str 的用法。

用法

rxp =~ str → integer or nil

匹配 - 將 rxpstr 匹配。

/at/ =~ "input data"   #=> 7
/ax/ =~ "input data"   #=> nil

如果 =~ 與帶有命名捕獲的正則表達式文字一起使用,則捕獲的字符串(或 nil)將分配給由捕獲名稱命名的局部變量。

/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ "  x = y  "
p lhs    #=> "x"
p rhs    #=> "y"

如果不匹配,則為變量分配 nil。

/(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/ =~ "  x = "
p lhs    #=> nil
p rhs    #=> nil

這個賦值是在 Ruby 解析器中實現的。解析器檢測到分配的“regexp-literal =~ 表達式”。正則表達式必須是沒有插值的文字並放置在左側。

如果正則表達式不是文字,則不會發生賦值。

re = /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/
re =~ "  x = y  "
p lhs    # undefined local variable
p rhs    # undefined local variable

正則表達式插值 #{} 也會禁用分配。

rhs_pat = /(?<rhs>\w+)/
/(?<lhs>\w+)\s*=\s*#{rhs_pat}/ =~ "x = y"
p lhs    # undefined local variable

如果將正則表達式放在右側,則不會發生賦值。

"  x = y  " =~ /(?<lhs>\w+)\s*=\s*(?<rhs>\w+)/
p lhs, rhs # undefined local variable

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Regexp.rxp =~ str。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。