找回密码
 注册
搜索
查看: 1114|回复: 11

求问各位大神我思索了好久的关于W参数的问题

[复制链接]
门派:嵩山派
发表于 2018-9-6 15:37:50 | 显示全部楼层 |阅读模式
想问问传递给函数的w[1]、w[2]、w[n]是怎么定义的

例如我发现   

描述(\D*)描述
有时候匹配的出来的是w[1],有时候却又是w[2],这个位置具体是由什么规则控制的?

虽然多试几次总能找到,但不明白它的原理是什么,为什么有时候是1有时候又是2。

希望大神们为我解惑,万分感谢!


门派:华山派
发表于 2018-9-6 16:58:56 | 显示全部楼层
有括号()的会把内容抓取出来存到w中
第一个()里的内容存到w[1],第二个()里的内容存到w[2],依次类推
想要知道存到第几个w[]里,数括号就行了

评分

1

查看全部评分

门派:姑苏慕容
发表于 2018-9-6 16:17:33 | 显示全部楼层
我也没研究明白,但目前知道的\\D和(\\D)都算一个位置,('分花拂柳|横行漠北')  这种的也算一个位置,(>)这种也算个位置,w[1]有时候返回整个触发,有时是空,所以每次创建个触发我都print个w[2]然后才知道到底自己抓的位置在哪里。
门派:少林派
发表于 2018-9-6 19:20:37 来自手机 | 显示全部楼层
这个帖子我感觉好像不应该老鼠提的
门派:少林派
发表于 2018-9-6 19:21:09 来自手机 | 显示全部楼层
因为好像我都知道是怎么回事
门派:嵩山派
 楼主| 发表于 2018-9-6 20:05:14 | 显示全部楼层
本帖最后由 marmot@tj 于 2018-9-6 20:37 编辑
xyxs@tj 发表于 2018-9-6 16:58
有括号()的会把内容抓取出来存到w中
第一个()里的内容存到w[1],第二个()里的内容存到w[2],依次类推
想 ...

我可能没有表达清楚,我的意思是有时候吧我的括号在第一个位置,但抓出来的结果有时候是w[1],有时候是w[2]



比如说    我要抓的内容是这里!     这句话,    写成正则      '我要抓的内容是(\\D*)!'

结果这个有时候返回的是w[1]      有时候却是w[2]


具体拿个例子出来吧还是:

create_trigger_t('dmlfight1','^(> )*突然间,一个身影出在漫天蝶影之中。你定睛一看,正是(\\D*) (\\D*)\\((\\D*)\\)。','','dml_fight')

突然间,一个身影出在漫天蝶影之中。你定睛一看,正是大轮寺血刀老祖亲传弟子 妙音(Fuxiang)。

这个触发器我要抓第二个和第三个括号里的内容,理论上来说应该是 w[2] 以及 w[3] 对吧,但实际的是 w[3] 以及 w[4]


例2:
create_trigger_t('targetcheck1','^>*\\d*:\\s*\\S*\\s*(\\d*)\\s*(\\D*)\\((\\D*)\\)\\s*\\D*\\s*(\\d*)\\s*\\S*\\s*\\S*$','','dml_checktarget')
这个抓的四个参数的位置又是正常的,第n个括号就对应 w[n]

有时候写像这种比较复杂的
门派:嵩山派
 楼主| 发表于 2018-9-6 20:05:48 | 显示全部楼层
woshicy@tj 发表于 2018-9-6 19:21
因为好像我都知道是怎么回事

水大师给说说啊,给解解惑
门派:嵩山派
 楼主| 发表于 2018-9-6 20:11:42 | 显示全部楼层
本帖最后由 marmot@tj 于 2018-9-6 20:46 编辑
fqyyd@tj 发表于 2018-9-6 16:17
我也没研究明白,但目前知道的\\D和(\\D)都算一个位置,('分花拂柳|横行漠北')  这种的也算一个位置,(> ...


我就是想知道他为啥一会是1一会是2的,想知道这个顺序是由什么规则决定的。知道的话以后写完表达式就知道取第几位啊







应该就是相神说的只要是出现了 () 就占一个位置
门派:嵩山派
 楼主| 发表于 2018-9-6 20:39:27 | 显示全部楼层
xyxs@tj 发表于 2018-9-6 16:58
有括号()的会把内容抓取出来存到w中
第一个()里的内容存到w[1],第二个()里的内容存到w[2],依次类推
想 ...

哦我明白了.......我忽略了你话里一个很重要的东西。那就是括号 () 有时候触发器开头的 (> ) 我没有当成一个待抓取的参数来看待。现在完全明白为啥有时候是1有时候又是2了。多谢大神的指导。总算是明白了
门派:华山派
发表于 2018-9-6 23:33:17 | 显示全部楼层
marmot@tj 发表于 2018-9-6 20:05
我可能没有表达清楚,我的意思是有时候吧我的括号在第一个位置,但抓出来的结果有时候是w[1],有时候是w[ ...

create_trigger_t('dmlfight1','^(> )*突然间,一个身影出在漫天蝶影之中。你定睛一看,正是(\\D*) (\\D*)\\((\\D*)\\)。','','dml_fight')
(> )  这是w[1]
正是(\\D*) (\\D*)\\((\\D*)\\)  分别是w[2] w[3] w[4]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-6-9 13:23 , Processed in 0.025212 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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