请问这个$1是干什么的,我想知道这个$是什么意思?(正则的) 第一个答对的给分,随便请高手告诉我,看哪一个篇文章能了解这个$的用法(baidu把这个$过滤了查不到) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 表示正则表达式中第一个匹配,就是用()围起来的那部分正则表达式如果一个表达式中有2个()的匹配则第一个是$1第二个是$2以此类推有点类似于string.fromat中的{0} $0到$9对应表示正则表达式中第n个匹配项,$0是指全部匹配内容 urlregex.Replace(strContent,$0);//使用后的结果和原来是一样的$1到$9一般是正则表达式中第几个小括号内的匹配内容。如果你的正则表达式里没有小括号,那么$1到$9不会被换掉。具体含义可以看“正则表达式”相关书 MSDN里的原话:$number 替换由组号 number(十进制)匹配的最后一个子字符串。 楼主可以直接去查MSDN 正则在某一程度来讲,还是要加进自己的理解的,正则的文章很多,但基本上讲的都很晦涩难懂就个人理解和使用正则的经验来讲,“$”在正则中有四种用途第一种用途,在正则表达式中,\$用来匹配“$”字符本身第二种用途,在正则表达式中,$与字符串结束的地方匹配,不匹配任何字符第三种用途,就是楼主所给例子中,是对匹配结果中捕获组内容的引用,引用的方式有两种一种是对普通捕获组的引用,格式为“$number”,此处的number为10进制数,并不局限于0-9,其中的“$0”指匹配结果的全部内容,其它的如“$15”为第15个捕获组所匹配的内容另一种是对命名捕获组的引用,格式为“${content}”至于捕获组的概念,可以查阅相关文章,简单点理解,就是非零宽度断言的(),也就是正则中可以匹配到内容的()举例说明就是用如下正则<a\s+href=(?<link>[^\s]*?)\s*>(.*?)</a>来匹配下面字符串<a href=http://www.baidu.com >百度</a>我们可以用“${link}”或者“$1”来得到(?<link>[^\s]*?)这一命名捕获组所匹配的字符串http://www.baidu.com而用“$2”来得到(.*?)这一捕获组所匹配的字符串“百度”应用举例1string yourStr = richTextBox1.Text;Match m = Regex.Match(yourStr, @"<a\s+href=(?<link>[^\s]*?)\s*>(?<name>.*?)</a>");richTextBox2.Text = m.Result("$1")+"\n";richTextBox2.Text += m.Result("${link}") + "\n";richTextBox2.Text += m.Result("$2");应用举例2string yourStr = richTextBox1.Text;richTextBox2.Text = Regex.Replace(yourStr, @"<a\s+href=(?<link>[^\s]*?)\s*>(?<name>.*?)</a>", "$2");第四种用途,用作转义,就是在上例中,如果要替换的结果中含有“$”,比如我想得到的结果为“$百度$”,那么就要“$$”这样写来得到“$”字符本身string yourStr = richTextBox1.Text;richTextBox2.Text = Regex.Replace(yourStr, @"<a\s+href=(?<link>[^\s]*?)\s*>(?<name>.*?)</a>", "$$$2$$"); $+数字 表示REGEX里的分组 在使用REGEX时 用一对垮号就表示添加一个分组 在REGEX替换的时候用$表示捕获到的结果的分组相当于.Group[分组索引].value 楼主去找个正则匹配的校验工具 MTracer用一下就明白了。 查看你自己机器上的msdn,“.net framework正则 替换表达式”。那是替换的最简单写法。 可以这么理解。不过C#中一般不这么用,给你写段 string strMtitle = 正则表达式 MatchCollection LrcMatches = Regex.Matches(strLrcUrl, strMtitle, RegexOptions.IgnoreCase | RegexOptions.Compiled); ArrayList arr = new ArrayList(); foreach (Match mm in LrcMatches) { strLrcUrlText = mm.Groups["url"].Value.ToString().Trim(); arr.Add(strLrcUrlText); } $group 用group指定的组号替换,该组号是捕获组的序号,从1开始${name} 替换由(?<name>)匹配的最后一个字串$$ 替换字符$$& 替换整个的匹配$` 替换输入字符串在匹配前的所有文本$' 替换输入字符串在匹配后的所有文本$+ 替换最后捕获的组$_ 替换整个的输入字符串 关于msgbox和alert的问题 仿QQ邮箱/163邮箱接收人的实现... 小问JQUERY 遍历 单选 不规则的Excel导入到数据库中(可以提供思路~~~如果有DEMO最好了~~) 如何将指定的文件(doc)上传,保存到数据库里面 [.Net2.0数据源控件]请问如何获取QueryStringParameter的值? 请问有没有不让下拉菜单不被DropDownList等控件覆盖的方法? 小问题,关于客户端脚本的,送分!! 急,一个基本问题的讨教…… 高兴,散分祝贺! 十万火急.在线求救!!!!.net中 SqlDataSource 参数的问题 程序时常出现 列""不属于表""
如果一个表达式中有2个()的匹配则
第一个是$1第二个是$2
以此类推
有点类似于string.fromat中的{0}
urlregex.Replace(strContent,$0);//使用后的结果和原来是一样的$1到$9一般是正则表达式中第几个小括号内的匹配内容。如果你的正则表达式里没有小括号,那么$1到$9不会被换掉。具体含义可以看“正则表达式”相关书
一种是对普通捕获组的引用,格式为“$number”,此处的number为10进制数,并不局限于0-9,其中的“$0”指匹配结果的全部内容,其它的如“$15”为第15个捕获组所匹配的内容另一种是对命名捕获组的引用,格式为“${content}”至于捕获组的概念,可以查阅相关文章,简单点理解,就是非零宽度断言的(),也就是正则中可以匹配到内容的()举例说明就是用如下正则
<a\s+href=(?<link>[^\s]*?)\s*>(.*?)</a>
来匹配下面字符串
<a href=http://www.baidu.com >百度</a>
我们可以用“${link}”或者“$1”来得到(?<link>[^\s]*?)这一命名捕获组所匹配的字符串
http://www.baidu.com
而用“$2”来得到(.*?)这一捕获组所匹配的字符串“百度”应用举例1
string yourStr = richTextBox1.Text;
Match m = Regex.Match(yourStr, @"<a\s+href=(?<link>[^\s]*?)\s*>(?<name>.*?)</a>");
richTextBox2.Text = m.Result("$1")+"\n";
richTextBox2.Text += m.Result("${link}") + "\n";
richTextBox2.Text += m.Result("$2");应用举例2
string yourStr = richTextBox1.Text;
richTextBox2.Text = Regex.Replace(yourStr, @"<a\s+href=(?<link>[^\s]*?)\s*>(?<name>.*?)</a>", "$2");
第四种用途,用作转义,就是在上例中,如果要替换的结果中含有“$”,比如我想得到的结果为“$百度$”,那么就要“$$”这样写来得到“$”字符本身string yourStr = richTextBox1.Text;
richTextBox2.Text = Regex.Replace(yourStr, @"<a\s+href=(?<link>[^\s]*?)\s*>(?<name>.*?)</a>", "$$$2$$");
在使用REGEX时 用一对垮号就表示添加一个分组 在REGEX替换的时候用$表示捕获到的结果的分组
相当于.Group[分组索引].value
用一下就明白了。
查看你自己机器上的msdn,“.net framework正则 替换表达式”。那是替换的最简单写法。
MatchCollection LrcMatches = Regex.Matches(strLrcUrl, strMtitle, RegexOptions.IgnoreCase | RegexOptions.Compiled);
ArrayList arr = new ArrayList();
foreach (Match mm in LrcMatches)
{
strLrcUrlText = mm.Groups["url"].Value.ToString().Trim();
arr.Add(strLrcUrlText);
}
${name} 替换由(?<name>)匹配的最后一个字串
$$ 替换字符$
$& 替换整个的匹配
$` 替换输入字符串在匹配前的所有文本
$' 替换输入字符串在匹配后的所有文本
$+ 替换最后捕获的组
$_ 替换整个的输入字符串