日期:2014-05-18  浏览次数:20780 次

请教正则表达式遇到的问题
字符串 "fooood".
使用正则表达式 f(?<name>o{2}) 匹配时
程序中写了
varName = textbox1.text;
xxx.groups[varName].value 可以获得值
xxx.groups[1].value 也可以获得值,但这个时候 将文本值赋值为 1,即 varName="1" 则不可获取到捕获的值

但是不指定 组名,也就是 f(o{2})时,将文本赋值为 1 却可以捕获到值。。

而 写成 f(?<name>(o{2})) ,不管文本是 1 还是 name 都是可以的。。

不知道为什么了。。


------解决方案--------------------
老大,你那个字符的“1”和数字的1是一回事吗,数字是下标,“1”是名字,你哪有名字为1的组啊
------解决方案--------------------
探讨
字符串 "fooood".
使用正则表达式 f(?<name>o{2}) 匹配时
程序中写了
varName = textbox1.text;
xxx.groups[varName].value 可以获得值
xxx.groups[1].value 也可以获得值,但这个时候 将文本值赋值为 1,即 varName="1" 则不可获取到捕获的值

但是不指定 组名,也就是 f(o{2})……

------解决方案--------------------
xxx.groups[varName].Value中的varName是字符串变量啊,相当于xxx.groups["1"].Value,因为没有名字为1的分组,当然获取不都啊。
------解决方案--------------------

f(?<name>o{2})

--------------》

ma.Groups["name"].Value
ma.Groups[1].Value

这两种都能匹配oo

----------------------------

 f(o{2})

----->

ma.Groups[1].Value

这种能匹配oo

------解决方案--------------------
探讨

xxx.groups[varName].Value中的varName是字符串变量啊,相当于xxx.groups["1"].Value,因为没有名字为1的分组,当然获取不都啊。

------解决方案--------------------
不指定组名,系统会有默认值,你好好看看帮助
0,1,2都会有系统指定相同的name即 “0”,“1”,“2”
------解决方案--------------------
探讨
引用:

xxx.groups[varName].Value中的varName是字符串变量啊,相当于xxx.groups["1"].Value,因为没有名字为1的分组,当然获取不都啊。

他要的就是这个解释,因为根本都不存在"1"这个捕获组,xxx.groups[varName].Value这样写是有varName这个捕获组