Project1
标题:
请问:这个正则表达式匹配什么?
[打印本页]
作者:
kvkv97
时间:
2021-2-28 15:59
标题:
请问:这个正则表达式匹配什么?
请问:这个正则表达式匹配
text.gsub!(/\\[Vv]\[([0-9]+)\]/) { $game_variables[$1.to_i] }
请问:$1 匹配 哪个正则表达式,或者等于哪个正则表达式?
$1 =~ /\\[Vv]\[([0-9]+)\]/ 或者 $1 == /\\[Vv]\[([0-9]+)\]/?
请问$1到底匹配什么?
作者:
KB.Driver
时间:
2021-2-28 17:01
本帖最后由 KB.Driver 于 2021-2-28 17:04 编辑
$1是一种简便写法,含义是上一次匹配的第一个捕获分组数据
完整写法是Regexp.last_match[1]
如果匹配不成功,或者正则中没有捕获分组,会得到nil
在这里,正则中只有一个捕获分组,捕获的内容是1个或以上的数字。
可以系统地学习一下正则的语法,捕获分组是一对圆括号()包裹的内容。
---
至于后面的问题,不是那样写的。
ruby中正则的一种标准写法是
md = text.match(regexp)
md[1] # 第一个捕获分组
但是为了代码的简短,可以不主动赋值给md,也不使用match方法,而是用String的=~操作符
例如:
text =~ regexp
$1 # 效果与上面的md[1]相同
第二种写法在读取备注的脚本中常常见到,例如给装备添加备注改变普通攻击的技能,需要读取正则时可以这样写
if self.note =~ /<skill_id:\s*(\d+)>/
return $1.to_i
end
作者:
SailCat
时间:
2021-2-28 17:04
text.gsub!(/\\[Vv]\[
([0-9]+)
\]/)
这个用括号括起来的部分,就是$1的所指,如果你有很多个括号,可以用$2, $3...以此类推
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1