请问这个$1是干什么的,我想知道这个$是什么意思?(正则的)

sdjklioo 2007-03-03 12:41:10
string strContent = InputTextBox.Text;
Regex urlregex = new Regex(@"(http:\/\/([\w.]+\/?)\S*)",
RegexOptions.IgnoreCase| RegexOptions.Compiled);
strContent = urlregex.Replace(strContent,
"<a href=\"$1\" target=\"_blank\">$1</a>");//注意这里:要有$1, 否则在页面什么都看不到
Regex emailregex = new Regex(@"([a-zA-Z_0-9.-]+\@[a-zA-Z_0-9.-]+\.\w+)",
RegexOptions.IgnoreCase| RegexOptions.Compiled);
strContent = emailregex.Replace(strContent, "<a href=mailto:$1>$1</a>");//注意这里:要有$1, 否则什么都看不到
lbContent.Text += "<br/>"+strContent;
...全文
661 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wackyboy 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 wackyboy 的回复:]
$group  用group指定的组号替换,该组号是捕获组的序号,从1开始
${name}  替换由(? <name>)匹配的最后一个字串
$$      替换字符$
$&      替换整个的匹配
$`      替换输入字符串在匹配前的所有文本
$'      替换输入字符串在匹配后的所有文本
$+      替换最后捕获的组
$_      替换整个的输入字符串
[/Quote]
以上是替换时候用的
wackyboy 2009-11-24
  • 打赏
  • 举报
回复
$group 用group指定的组号替换,该组号是捕获组的序号,从1开始
${name} 替换由(?<name>)匹配的最后一个字串
$$ 替换字符$
$& 替换整个的匹配
$` 替换输入字符串在匹配前的所有文本
$' 替换输入字符串在匹配后的所有文本
$+ 替换最后捕获的组
$_ 替换整个的输入字符串







alittlegoodman 2009-11-24
  • 打赏
  • 举报
回复
out.print("mark");
zpcoder 2008-11-17
  • 打赏
  • 举报
回复

在正则表达式中

^ 表示开头处
$ 表示结属处

例如 ^\d$ 就只表示 \d
jiang_jiajia10 2008-11-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chsword 的回复:]
表示正则表达式中第一个匹配,就是用()围起来的那部分正则表达式
如果一个表达式中有2个()的匹配则
第一个是$1第二个是$2
以此类推
有点类似于string.fromat中的{0}
[/Quote]
可以这么理解。不过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);
}
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 sdjklioo 的回复:]
第一个答对的给分,随便请高手告诉我,看哪一个篇文章能了解这个$的用法(baidu把这个$过滤了查不到)
[/Quote]

查看你自己机器上的msdn,“.net framework正则 替换表达式”。那是替换的最简单写法。
zorou_fatal 2008-11-17
  • 打赏
  • 举报
回复
楼主去找个正则匹配的校验工具 MTracer
用一下就明白了。
hwrt 2008-11-17
  • 打赏
  • 举报
回复
System.out.println("学习");
petshop4 2007-03-06
  • 打赏
  • 举报
回复
$+数字 表示REGEX里的分组
在使用REGEX时 用一对垮号就表示添加一个分组 在REGEX替换的时候用$表示捕获到的结果的分组
相当于.Group[分组索引].value
zahota 2007-03-04
  • 打赏
  • 举报
回复
属性$1, ..., $9
取得匹配的子串,如果有的话
RexZheng 2007-03-04
  • 打赏
  • 举报
回复
怎么都能把这么简单的问题说得那么复杂/
-过客- 2007-03-04
  • 打赏
  • 举报
回复
正则在某一程度来讲,还是要加进自己的理解的,正则的文章很多,但基本上讲的都很晦涩难懂

就个人理解和使用正则的经验来讲,“$”在正则中有四种用途

第一种用途,在正则表达式中,\$用来匹配“$”字符本身

第二种用途,在正则表达式中,$与字符串结束的地方匹配,不匹配任何字符

第三种用途,就是楼主所给例子中,是对匹配结果中捕获组内容的引用,引用的方式有两种
一种是对普通捕获组的引用,格式为“$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$$");
oldmoon 2007-03-04
  • 打赏
  • 举报
回复
MSDN里的原话:$number 替换由组号 number(十进制)匹配的最后一个子字符串。

楼主可以直接去查MSDN
hiaming 2007-03-03
  • 打赏
  • 举报
回复
$0到$9对应表示正则表达式中第n个匹配项,

$0是指全部匹配内容
urlregex.Replace(strContent,$0);//使用后的结果和原来是一样的

$1到$9一般是正则表达式中第几个小括号内的匹配内容。如果你的正则表达式里没有小括号,那么$1到$9不会被换掉。

具体含义可以看“正则表达式”相关书
dsdddsdd3ewww 2007-03-03
  • 打赏
  • 举报
回复
我也不懂,楼上的是自己的理解,在哪有文章???
重典 2007-03-03
  • 打赏
  • 举报
回复
表示正则表达式中第一个匹配,就是用()围起来的那部分正则表达式
如果一个表达式中有2个()的匹配则
第一个是$1第二个是$2
以此类推
有点类似于string.fromat中的{0}
sdjklioo 2007-03-03
  • 打赏
  • 举报
回复
第一个答对的给分,随便请高手告诉我,看哪一个篇文章能了解这个$的用法(baidu把这个$过滤了查不到)
dsdddsdd3ewww 2007-03-03
  • 打赏
  • 举报
回复
我查了查说是:
$ 与字符串结束的地方匹配,不匹配任何字符
这???

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧