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

Project1

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

[已经解决] 请教一个问题关于正则表达式

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
跳转到指定楼层
1
发表于 2011-9-22 17:17:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
"a:34c,a:8q57,a:1/3,a:?37"
1、如何获取第3个a:到,之间的值(就是1/3,之前什么的34c都是不确定值)
2、1/3是在第3个a:后面,已知1/3如何返回前面a:的次数?(这里是3)
最近在研究XAS

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2011-9-22 17:36:07 | 只看该作者
本帖最后由 fux2 于 2011-9-22 17:37 编辑
  1. "a:34c,a:8q57,a:1/3,a:?37".gsub(/a:(.*),/){$1+"●"}.split(/●/)
复制代码
然后数组你懂的吧,手机没测试,不知对错

点评

那个大圆点是怎么打出来的⋯⋯还是复制的⋯⋯  发表于 2011-9-23 02:19
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
255
在线时间
227 小时
注册时间
2009-7-26
帖子
216
3
发表于 2011-9-23 02:26:14 | 只看该作者
本帖最后由 darkscout3000 于 2011-9-22 13:27 编辑

2L 的结果出来是
  1. ["a:34c,a:8q57,a:1/3,", "a:?37"]
复制代码
正则表达式用 .* 很容易就匹配到最后面去了,因为 .* 是匹配任何东西

这个是1/3
  1. "a:34c,a:8q57,a:1/3,a:?37".gsub(/a:/, '').split(",")[2]
复制代码
不要吐槽我⋯⋯
回复

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42404
在线时间
7602 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

4
发表于 2011-9-23 07:33:09 | 只看该作者
本帖最后由 fux2 于 2011-9-23 07:34 编辑
darkscout3000 发表于 2011-9-23 02:26
2L 的结果出来是正则表达式用 .* 很容易就匹配到最后面去了,因为 .* 是匹配任何东西

这个是1/3 ...


呵,那如果.*里包含,呢?
  1. "a:34c,a:8q57,a:1/3,a:?37".gsub(/a:([^a:]),/){$1+"●"}.split(/●/)
复制代码
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
5
 楼主| 发表于 2011-9-23 20:15:45 | 只看该作者
关键是第二步,已经获得了1/3的情况下返回a:的编号,比如上面是在第3个a:后面的,就返回3
另外如果要返回1/前面的a:的编号呢?
最近在研究XAS
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
255
在线时间
227 小时
注册时间
2009-7-26
帖子
216
6
发表于 2011-9-23 21:31:24 | 只看该作者
fux2 发表于 2011-9-22 18:33
呵,那如果.*里包含,呢?

呵呵,你自己试试就知道了,结果非常震惊⋯⋯


darkscout3000于2011-9-23 08:34补充以下内容:
如果我没理解错的话你的意思是知道1/3是第几个a: 后面的是吧?那样的话⋯⋯
  1. 如果我没理解错的话你的意思是知道1/3是第几个a: 后面的是吧?那样的话⋯⋯
  2. "a:34c,a:8q57,a:1/3,a:?37".gsub(/a:/, '').split(",").index("1/3")
复制代码
这样给出来的结果是2(因为数组永远从0开始算),你+1就好了

点评

话说为什么我点评变成了回复⋯⋯好奇怪  发表于 2011-9-23 21:35
手机党测试无力  发表于 2011-9-23 21:33
不要吐槽我⋯⋯
回复

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
7
发表于 2011-9-23 21:54:17 | 只看该作者
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
8
 楼主| 发表于 2011-9-24 17:32:06 | 只看该作者
darkscout3000 发表于 2011-9-23 21:31
呵呵,你自己试试就知道了,结果非常震惊⋯⋯

这个例子其实我想举的是如果匹配某个关键字怎么返回它的次数,因为要匹配文章里的某些关键字。用split后被分割成了数组,里面的字符串都是一大段一大段,要匹配的是里面的某些关键字。。。
现在是如果把匹配 1/3 改成匹配 / ,也就是找到 / 然后找是在第几个a:后面的,这样的话该怎么办?
最近在研究XAS
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
255
在线时间
227 小时
注册时间
2009-7-26
帖子
216
9
发表于 2011-9-25 11:39:26 | 只看该作者
赛露休斯 发表于 2011-9-24 04:32
这个例子其实我想举的是如果匹配某个关键字怎么返回它的次数,因为要匹配文章里的某些关键字。用split后 ...

能找到1/3,自然也能找到 /
你把我给你的那段代码里头最后的1/3 改成 / 就好了……
对于其他的字符串同理……

如果你想知道有多少次匹配成功……
  1. "a:34c,a:8q57,a:1/3,a:?37".scan(/1\/3/).size
复制代码
这样会返回 1 (注意 1/3 的斜杠需要在前面添加 \ 符号)

举例说明
  1. "abc, abcdef, abccddef".scan(/abc/).size
复制代码
的结果是3
不要吐槽我⋯⋯
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
167
在线时间
434 小时
注册时间
2009-1-1
帖子
643
10
 楼主| 发表于 2011-9-25 18:53:48 | 只看该作者
darkscout3000 发表于 2011-9-25 11:39
能找到1/3,自然也能找到 /
你把我给你的那段代码里头最后的1/3 改成 / 就好了……
对于其他的字符串同理 ...
  1. "a:34c,a:8q57,a:1/3,a:?37".gsub(/a:/, '').split(",").index("/")
复制代码
如果 1/3 改成 / 返回nil
另外,index(val)里面参数貌似是数组的值,比如这里是1/3,换成 / 就找不到了
最近在研究XAS
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 15:31

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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