查看: 5475|回复: 8

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

[复制链接]

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
发表于 2012-2-7 23:22:58 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 英顺的马甲 于 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方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
梦石
0
星屑
7045
在线时间
1666 小时
注册时间
2008-10-29
回帖
6612

贵宾

发表于 2012-2-7 23:36:10 | 显示全部楼层
我用这个来读取在备注里设置的战斗图文件名

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

评分

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

查看全部评分












你知道得太多了

回复

使用道具 举报

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
 楼主| 发表于 2012-2-7 23:50:42 | 显示全部楼层
感谢楼上那位,不说我还忘了有这招,
不过我倒是疑惑为啥\w+会出错
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

天仙

梦石
0
星屑
720
在线时间
184 小时
注册时间
2008-4-15
回帖
4872

贵宾

发表于 2012-2-8 03:09:45 | 显示全部楼层
\w 相当於[0-9A-Za-z_] ,是匹配 alphanumeric 也就是只有英文字母和数字而已
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复

使用道具 举报

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
回帖
3011
 楼主| 发表于 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方面的问题欢迎发电邮到engshun@1ppl.me咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2012-2-8 15:56:27 | 显示全部楼层
本帖最后由 tseyik 于 2012-2-8 15:57 编辑



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

使用道具 举报

老黄鸡

梦石
4
星屑
45692
在线时间
7947 小时
注册时间
2009-7-6
回帖
13335

MZ评测员RM创作大赛01组委会开拓者贵宾

发表于 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
不接受对其他插件维护的委托
回复

使用道具 举报

天仙

梦石
0
星屑
720
在线时间
184 小时
注册时间
2008-4-15
回帖
4872

贵宾

发表于 2012-2-8 21:48:40 | 显示全部楼层

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

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

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

点评

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

使用道具 举报

梦石
0
星屑
50
在线时间
163 小时
注册时间
2011-11-12
回帖
56
发表于 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
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部