本文簡要介紹ruby語言中 Regexp.rxp =~ str
的用法。
用法
rxp =~ str → integer or nil
匹配 - 將 rxp
與 str
匹配。
/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 Regexp.rxp ===用法及代碼示例
- Ruby Regexp.rxp ==用法及代碼示例
- Ruby Regexp.eql?用法及代碼示例
- Ruby Regexp.fixed_encoding?用法及代碼示例
- Ruby Regexp.options用法及代碼示例
- Ruby Regexp.inspect用法及代碼示例
- Ruby Regexp.names用法及代碼示例
- Ruby Regexp.escape用法及代碼示例
- Ruby Regexp.casefold?用法及代碼示例
- Ruby Regexp.match用法及代碼示例
- Ruby Regexp.try_convert用法及代碼示例
- Ruby Regexp.match?用法及代碼示例
- Ruby Regexp.union用法及代碼示例
- Ruby Regexp.source用法及代碼示例
- Ruby Regexp.new用法及代碼示例
- Ruby Regexp.named_captures用法及代碼示例
- Ruby Regexp.~ rxp用法及代碼示例
- Ruby Regexp.last_match用法及代碼示例
- Ruby Regexp.to_s用法及代碼示例
- Ruby Regexp named_captures()用法及代碼示例
- Ruby Regexp to_s()用法及代碼示例
- Ruby Regexp hash()用法及代碼示例
- Ruby Regexp類用法及代碼示例
- Ruby Regexp inspect()用法及代碼示例
- Ruby Regexp source()用法及代碼示例
注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Regexp.rxp =~ str。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。