c# 正则 @"([a-z]+) \1怎么理解? string x = "Live for nothing nothing";Regex r = new Regex(@"([a-z]+) \1");([a-z]+)应该怎么理解?匹配a-z任意一个字符?r的$1结果是什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ([a-z]+)这个不难[a-z]+就是1个或1个以上小写字母([a-z]+)就是1个或1个以上小写字母并分组用Match.Groups[1].Value可以取值。 string x = "Live for nothing nothing"; Regex r = new Regex(@"([a-z]+) \1"); ([a-z]+)应该怎么理解?匹配a-z任意一个字符? r的$1结果是什么?\1 是哦 引用第一个括号里面的值比如是a 那么\1反向引用也就是a经常用来 显示重复的东东 ([a-z]+) \1问题的关键在于对\1的理解,\1是对第一个捕获组的反向引用,是在表达式匹配过程中对前面子表达式已匹配内容的引用这里的第一个捕获组就是([a-z]+),而它匹配的内容是一个或多个小写字母当第一个捕获组匹配完成时,\1的内容也就完全确定了([a-z]+)尝试匹配,因为是贪婪模式,所以会匹配到Live,那么此时空格后的\1的内容也必须是Live,整个表达式才能匹配成功,但这显然是不成立的,所以([a-z]+)会继续向后尝试匹配,直到它匹配到nothing,而空格后的也是nothing,这时整个表达式匹配成功,所以$1,也就是([a-z]+)匹配到的内容就是nothing反向引用用得比较多的地方是限定某一子表达式成对出现,比如<a href=(['"])[^'"]*\1[^>]*>这里的\1就表示,如果前面的是单引号,\1这个位置就一定要是单引号才能匹配成功,如果前面是双引号,\1这里同样必须是双引号才能匹配成功当然还有去除重复字符串等等应用,楼主自己体会下吧 关于REQUEST的querystring出现乱码问题 在后台用JS切换表格背景图片的问题 页面图片刷新不及时咋回事? 大家好,新站开张了 做一个企业展示的网站大概多少钱 求高手帮帮忙啊。。偶搞了一个五一也没搞定!! Excel问题 Response编译出错问题 BLOG问题 请问NET是以XML为核心那么到底XML有什么特别呢 ? 谁有中文验证码的代码啊,急用?????? 急:ASP.NET开发中图片应储存在哪里?
[a-z]+就是1个或1个以上小写字母
([a-z]+)就是1个或1个以上小写字母并分组用Match.Groups[1].Value可以取值。
Regex r = new Regex(@"([a-z]+) \1");
([a-z]+)应该怎么理解?匹配a-z任意一个字符?
r的$1结果是什么?\1 是哦 引用第一个括号里面的值
比如是a 那么\1反向引用也就是a
经常用来 显示重复的东东
这里的第一个捕获组就是([a-z]+),而它匹配的内容是一个或多个小写字母
当第一个捕获组匹配完成时,\1的内容也就完全确定了([a-z]+)尝试匹配,因为是贪婪模式,所以会匹配到Live,那么此时空格后的\1的内容也必须是Live,整个表达式才能匹配成功,但这显然是不成立的,所以([a-z]+)会继续向后尝试匹配,直到它匹配到nothing,而空格后的也是nothing,这时整个表达式匹配成功,所以$1,也就是([a-z]+)匹配到的内容就是nothing反向引用用得比较多的地方是限定某一子表达式成对出现,比如
<a href=(['"])[^'"]*\1[^>]*>
这里的\1就表示,如果前面的是单引号,\1这个位置就一定要是单引号才能匹配成功,如果前面是双引号,\1这里同样必须是双引号才能匹配成功当然还有去除重复字符串等等应用,楼主自己体会下吧