当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。