设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1644|回复: 8
打印 上一主题 下一主题

[有事请教] 关于正规表达式向后引用的问题

[复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23186
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

跳转到指定楼层
1
发表于 2017-12-23 12:20:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
代码1的执行结果正常
RUBY 代码复制
  1. replace_pattern1 = /\\c(\d+)\[(.*?)\]/i
  2. replace_pattern2 = /\\d(\d+)\[(.*?)\]/i
  3. text.gsub!(replace_pattern1) {"\\c[#$1]#$2\\c[0]"}
  4. text.gsub!(replace_pattern2) {"\\c[#$1]\\d[#$2]\\c[0]"}

代码2的执行结果不正常
RUBY 代码复制
  1. replace_patterns = {
  2. /\\c(\d+)\[(.*?)\]/i => "\\c[#$1]#$2\\c[0]",
  3. /\\d(\d+)\[(.*?)\]/i => "\\c[#$1]\\d[#$2]\\c[0]"
  4. }
  5. replace_patterns.each {|k, v| text.gsub!(k) {v}}


是因为向后引用不能放在循环里吗?
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv3.寻梦者

梦石
0
星屑
1337
在线时间
675 小时
注册时间
2009-11-11
帖子
2790
5
发表于 2017-12-23 23:25:58 | 只看该作者
俺基本看不懂啊,我只用基本的 loop end

点评

each是按照size決定次數  发表于 2017-12-24 00:42

嘿。嘿。嘿
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

4
发表于 2017-12-23 21:21:54 | 只看该作者
本帖最后由 RyanBern 于 2017-12-23 21:23 编辑

1. 请选择正确的版块提问(x
2. 请善用搜索功能(x
https://rpg.blue/forum.php?mod=viewthread&tid=388535

点评

看来咱们遇到了一样的问题(重点错)  发表于 2017-12-23 21:26

评分

参与人数 2+2 收起 理由
SailCat + 1 我很赞同
斜眼君 + 1

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

3
发表于 2017-12-23 21:07:52 | 只看该作者
除楼上的方法外,还可以用字符串作为 gsub 的第二个参数,用 \1 \2 指代被匹配的内容(具体的见文档),可以避开这个问题

点评

多谢……我最后是把$1 $2写成%s, 然后sprintf(v, *$~[1..-1])  发表于 2017-12-23 21:15

评分

参与人数 2+2 收起 理由
SailCat + 1 认可答案
斜眼君 + 1

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

孤独守望

梦石
0
星屑
3132
在线时间
1535 小时
注册时间
2006-10-16
帖子
4321

开拓者贵宾

2
发表于 2017-12-23 20:58:20 | 只看该作者
字面值将于执行时被立即决定值。
当 replace_pattern 被结算时,其中的字符串内容被当即确定。
要延迟决定它的值,可以将它放在块(Proc)中。
比如:
  1. replace_patterns = {
  2.      /your_exp/ => Proc.new { |args| "value" }
  3. }
  4. replace_patterns.each {|k, v| text.gsub! k, &v }
复制代码

我有点不敢相信……

点评

可以,不过不太直观……replace_patterns实际并不是我去设置,是交给脚本的使用者设置……  发表于 2017-12-23 21:41

评分

参与人数 1+1 收起 理由
SailCat + 1 塞糖

查看全部评分

菩提本非树,明镜本非台。回头自望路漫漫。不求姻缘,但求再见。
本来无一物,何处惹尘埃。风打浪吹雨不来。荒庭遍野,扶摇难接。
不知道多久更新一次的博客
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-13 01:30

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表