Project1
标题:
正则表达式 \w+ 出错,求解决方法
[打印本页]
作者:
英顺的马甲
时间:
2012-2-7 23:22
标题:
正则表达式 \w+ 出错,求解决方法
本帖最后由 英顺的马甲 于 2012-2-7 23:51 编辑
str = "测试\\p[啦啦啦]\\p[lalala]\\p[1234]"
str.gsub!(/\\p\[\w+\]/){"[成功!]"}
msgbox str
复制代码
拿到的结果会是“测试\p[啦啦啦][成功!][成功!]”
也就是说全角字符无法匹配。
以上问题由
@enghao_lim
发现
发现者的话:看你们如何写出对话框脚本
作者:
后知后觉
时间:
2012-2-7 23:36
我用这个来读取在备注里设置的战斗图文件名
if /@btname\[(.+?)\]/ =~ @note
作者:
英顺的马甲
时间:
2012-2-7 23:50
感谢楼上那位,不说我还忘了有这招,
不过我倒是疑惑为啥\w+会出错
作者:
雪流星
时间:
2012-2-8 03:09
\w 相当於[0-9A-Za-z_] ,是匹配 alphanumeric 也就是只有英文字母和数字而已
作者:
英顺的马甲
时间:
2012-2-8 15:45
雪流星 发表于 2012-2-8 03:09
\w 相当於[0-9A-Za-z_] ,是匹配 alphanumeric 也就是只有英文字母和数字而已
ACE的帮助:
\w
英数字。[0-9A-Za-z_] と同じ。
日本語のいわゆる全角文字にもマッチします。
复制代码
意思是匹配任何全角字符包括日文
况且RMXP,RMVX,普通Ruby甚至是C++的正则表达式都能以\w+来匹配全角字符
唯独ACE的偏偏出错,这是不是意味着什么呢?
作者:
tseyik
时间:
2012-2-8 15:56
本帖最后由 tseyik 于 2012-2-8 15:57 编辑
你誤解了
只把半角的[0-9A-Za-z_]
轉成全角的[0-9A-Za-z_]
作者:
fux2
时间:
2012-2-8 17:29
本帖最后由 fux2 于 2012-2-8 17:30 编辑
猎奇在,如果把\w换成\W就会匹配到= =这无法理解,个人以为是这俩正则定义弄反了= =
顺带吐槽神tid
作者:
雪流星
时间:
2012-2-8 21:48
/W无法匹配"拉拉啦123abc"
\w 匹配 英数文字
\W匹配非英数文字,而不是英数文字+全角文字
如果要全部匹配,那就用 \S 匹配非空白文字
作者:
第七水螰
时间:
2012-2-9 10:12
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}。
puts ' 1f測o試2o3 '[/\p{Word}+/] # => 1f測o試2o3
复制代码
還可以只匹配漢字:
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
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1