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

Project1

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

[已经解决] 正则表达式 \w+ 出错,求解决方法

[复制链接]

Lv1.梦旅人

路人党员

梦石
0
星屑
51
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
跳转到指定楼层
1
发表于 2012-2-7 23:22:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 英顺的马甲 于 2012-2-7 23:51 编辑
  1. str = "测试\\p[啦啦啦]\\p[lalala]\\p[1234]"
  2. str.gsub!(/\\p\[\w+\]/){"[成功!]"}
  3. msgbox str
复制代码
拿到的结果会是“测试\p[啦啦啦][成功!][成功!]”
也就是说全角字符无法匹配。

以上问题由@enghao_lim发现
发现者的话:看你们如何写出对话框脚本
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党

Lv4.逐梦者

梦石
0
星屑
6695
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

2
发表于 2012-2-7 23:36:10 | 只看该作者
我用这个来读取在备注里设置的战斗图文件名

    if /@btname\[(.+?)\]/ =~ @note

评分

参与人数 1星屑 +40 收起 理由
英顺的马甲 + 40 认可答案

查看全部评分












你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
51
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
3
 楼主| 发表于 2012-2-7 23:50:42 | 只看该作者
感谢楼上那位,不说我还忘了有这招,
不过我倒是疑惑为啥\w+会出错
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

4
发表于 2012-2-8 03:09:45 | 只看该作者
\w 相当於[0-9A-Za-z_] ,是匹配 alphanumeric 也就是只有英文字母和数字而已
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

路人党员

梦石
0
星屑
51
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
5
 楼主| 发表于 2012-2-8 15:45:03 | 只看该作者
雪流星 发表于 2012-2-8 03:09
\w 相当於[0-9A-Za-z_] ,是匹配 alphanumeric 也就是只有英文字母和数字而已

ACE的帮助:
  1. \w
  2. 英数字。[0-9A-Za-z_] と同じ。
  3. 日本語のいわゆる全角文字にもマッチします。
复制代码
意思是匹配任何全角字符包括日文
况且RMXP,RMVX,普通Ruby甚至是C++的正则表达式都能以\w+来匹配全角字符
唯独ACE的偏偏出错,这是不是意味着什么呢?

点评

转到水区讨论去:http://bbs.66rpg.com/thread-222252-1-1.html  发表于 2012-2-8 15:51
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22092
在线时间
8579 小时
注册时间
2011-12-31
帖子
3362
6
发表于 2012-2-8 15:56:27 | 只看该作者
本帖最后由 tseyik 于 2012-2-8 15:57 编辑



你誤解了
   
    只把半角的[0-9A-Za-z_]
轉成全角的[0-9A-Za-z_]
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39985
在线时间
7501 小时
注册时间
2009-7-6
帖子
13489

开拓者贵宾

7
发表于 2012-2-8 17:29:04 | 只看该作者
本帖最后由 fux2 于 2012-2-8 17:30 编辑

猎奇在,如果把\w换成\W就会匹配到= =这无法理解,个人以为是这俩正则定义弄反了= =
顺带吐槽神tid

点评

定义没弄反,是\w少了对全角的匹配 =='',\w还是对A-Za-z0-9有效的。  发表于 2012-2-9 02:30
/W无法匹配"拉拉啦123abc"  发表于 2012-2-8 20:10
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
610
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

8
发表于 2012-2-8 21:48:40 | 只看该作者

/W无法匹配"拉拉啦123abc"

\w 匹配 英数文字
\W匹配非英数文字,而不是英数文字+全角文字

如果要全部匹配,那就用 \S 匹配非空白文字

点评

根据正则表达式\w应该是包括全角符,这点在XP和VX足以证明,只不过到了ACE就 ==''。我总觉得不是rgss原本就出错了就是汉化时候出错了。  发表于 2012-2-9 02:28
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
163 小时
注册时间
2011-11-12
帖子
56
9
发表于 2012-2-9 10:12:04 | 只看该作者
Ruby 的文檔明確聲明了:

\w [A-Za-z0-9_] Word character (+ Connector_Punctuation, Letter, Mark,
and Number)
\W [^A-Za-z0-9_] Any character except a word character

所以 \w 僅限 ASCII 字符。Ruby 的問題還是要以 Ruby 權威的文檔為准。另外,Ruby 1.9 的正則表達式引擎換成了 Onigurama,所以和 1.8 有差異也屬於正常現象。Onigurama 的功能比以前的正則引擎強了不知幾倍,若想要匹配 Unicode 字符,可以用 \p{Word}。
  1. puts '  1f測o試2o3  '[/\p{Word}+/] # => 1f測o試2o3
复制代码
還可以只匹配漢字:
  1. puts '  測試    '[/\p{Han}+/]      # => 測試
复制代码
\p{Word} 可以泛用于所有編碼,但 {Han} 只能用於 UTF-*。
Onigurama 完整的 Unicode character classes 表:

\p{name} Matches character with named property
\p{^name} Matches any character except named property
\P{name} Matches any character except named property

Property names
All encodings: Alnum, Alpha, Blank, Cntrl, Digit, Graph, Lower, Print, Punct, Space, Upper, XDigit, Word, ASCII
EUC and SJIS: Hiragana, Katakana
UTF-n: Any, Assigned, C, Cc, Cf, Cn, Co, Cs, L, Ll, Lm, Lo, Lt, Lu, M, Mc, Me, Mn, N, Nd, Nl, No, P, Pc, Pd, Pe, Pf, Pi, Po, Ps, S, Sc, Sk, Sm, So, Z, Zl, Zp, Zs, Arabic, Armenian, Bengali, Bopomofo, Braille, Buginese, Buhid, Canadian_Aboriginal, Cherokee, Common, Coptic, Cypriot, Cyrillic, Deseret, Devanagari, Ethiopic, Georgian, Glagolitic, Gothic, Greek, Gujarati, Gurmukhi, Han, Hangul, Hanunoo, Hebrew, Hiragana, Inherited, Kannada, Katakana, Kharoshthi, Khmer, Lao, Latin, Limbu, Linear_B, Malayalam, Mongolian, Myanmar, New_Tai_Lue, Ogham, Old_Italic, Old_Persian, Oriya, Osmanya, Runic, Shavian, Sinhala, Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-27 08:53

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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