当以下正则表达式匹配没有产生匹配的捕获时,访问元素[1]将返回以下错误:
"".match(/(abc)/)[1]
返回以下错误:
NoMethodError:未定义的方法`[]'为nil:NilClass
是否有更简洁的单行实现来执行等效的实现?
result = "".match(/(abc)/).nil? ? "" : "".match(/(abc)/)[1]
我正在寻找一种解决方案,它不需要重复匹配的代码**"".match(/abc/)**
,而是安全地访问第一个捕获的组,或者以空字符串作为结果失败。
[编辑更清楚]
对于以下字符串,匹配将为“123”:
“abc123def” .match(/ ABC([0-9] *)/)[1] => “123”
和“abcdef”应该返回“”
答案 0 :(得分:5)