Project1

标题: 请教几句脚本 [打印本页]

作者: 赛露休斯    时间: 2009-4-8 01:43
标题: 请教几句脚本
就以下这3句吧,具体怎么理解?
text.gsub!(/\\\\/) { "\000" }
text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
text.sub!(/\[([0-9]+)\]/, "")
[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 八云紫    时间: 2009-4-8 01:49
text.gsub!(/\\\\/) { "\000" }

在 text 中匹配 \\ ,替换成 \000

text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }

在 text 中匹配 \c[X] or \C[X] , X 是数字,替换成 \001[X]。
也可以写成 text.gsub!(/\\c\[([0-9]+)\]/i)

text.sub!(/\[([0-9]+)\]/, "")

在 text 中匹配第一次出现的 [X] , X 是数字, 替换成 ""

作者: tommay    时间: 2009-4-8 01:54
gsub!(pattern) {|matched| .... }
以 replace 来替换字符串中所有与 pattern 相匹配的部分。

sub!(pattern) {|matched| ... }
用 pattern 来替换首次匹配 pattern 的部分。


当检测到输入字符流中有 \\\\ 时,用 \000 取代之
当检测到输入字符流中有 \C 活 \c 时  用\001取代
用''来匹配[ ]内的数字,下面引用时用 $1表示上次匹配的内容

这些东西不用知道到底是干什么,只要知道凡是匹配都是这种语法格式就行了。默认的脚本中只有在显示对话的脚本中才会出现这种格式。

作者: 八云紫    时间: 2009-4-8 01:57
以下引用tommay于2009-4-7 17:54:37的发言:

当检测到输入字符流中有 \\\\ 时,用 \000 取代之

这些东西不用知道到底是干什么,只要知道凡是匹配都是这种语法格式就行了。默认的脚本中只有在显示对话的脚本中才会出现这种格式。


1. 第一个匹配的应该是 \\ , 第一个和第三个的 \ 是用来转义的。

2. 这个类似于在字符串里的搜索策略吧.
作者: 赛露休斯    时间: 2009-4-8 02:00
正则表达式?
比如这句text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
还是看不懂这些/、\、+代表什么意思,F1里的说明太官方话了,学不会

作者: 八云紫    时间: 2009-4-8 02:06
以下引用赛露休斯于2009-4-7 18:00:51的发言:

正则表达式?
比如这句text.gsub!(/\\[Cc]\[([0-9]+)\]/) { "\001[#{$1}]" }
还是看不懂这些/、\、+代表什么意思,F1里的说明太官方话了,学不会


/ \ + [ ] 什么的都是正则的元字符。

就说这个吧, /\\[Cc]\[([0-9]+)\]/

最外面的 /  / 是正则的开始与结束标志。在里面的都是字符都按正则处理。

然后再看 \\[Cc] , 因为 \ 也是正则的元字符之一,所以要匹配 \ 的话,就必须这么写 \\ ,第一个 \ 是用来转义的,第二个才是真正要匹配的 \ 。

[Cc] ,夹在 [ ] 中间的是一个字符集,就是说这里匹配的是 C c ,就是大小写的 C c ,比如
[0-9] 就是匹配所有的数字。

\[  ,同 \\, [ 也是元字符。

[0-9]+ 这个也一样,只是加了个 + ,表示最少要有一个数字。

\] 同 \[ 。 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: tommay    时间: 2009-4-8 02:13
原来是燐大人,在下献丑了- -
作者: 静·界    时间: 2009-4-8 02:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 八云紫    时间: 2009-4-8 02:18
以下引用tommay于2009-4-7 18:13:58的发言:

原来是燐大人,在下献丑了- -


嘛,献丑的是我呢,我是新人(>_<){/hx}。

不知道 LZ 明白了没? 正则 比较难明白,而且我写的也比较别扭~~
作者: 赛露休斯    时间: 2009-4-8 02:19
确实有些难
( ) 表示什么意思?


作者: 八云紫    时间: 2009-4-8 02:21
( )

正则表达式的群组化。与括号中的正则表达式相匹配的字符串将被保存下来,供后向引用使用。

匹配的部分应该是放到 $1 里面去~~~
作者: 赛露休斯    时间: 2009-4-8 02:56
虽然还是半知半解,不过有点基本概念了,谢谢这位“新人”




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1