c# 正则表代式的分组和匹配模式

编程入门 行业动态 更新时间:2024-10-10 03:30:35

c# <a href=https://www.elefans.com/category/jswz/34/1767706.html style=正则表代式的分组和匹配模式"/>

c# 正则表代式的分组和匹配模式

一、组的分类
正则中的组有捕获组和非捕获组,而捕获组又分为普通的捕获组和命名捕获组,分别为
捕获组:(exp)   
命名捕获组:(? <name> exp)   
非捕获组:(?:exp) 
 
二、组的作用
1、捕获组的作用
 
捕获组的作用是将正则表达式exp匹配到的内容保存到组里,供以后使用
 
比如这样一个字符串:
<a href="/" title="床上等你"> CSDN </a>
我想得到网址,而它符合的规则是在 <a...> 标签内,那就可以这样做

C# code
string test = "<a href=\"/" title=\"床上等你\">CSDN</a>";
Match m = Regex.Match(test, @"<a\s*href=""([^""]*)""[^>]*>", RegexOptions.IgnoreCase);
if (m.Success)
    MessageBox.Show(m.Groups[1].Value);

上面的正则表达式匹配到了 <a href="/" title="床上等你"> ,而我们想得到网址,表达式其它部分只是为了保证取到的网址是在 <a...> 标签内的,所以这里用到的捕获组,把匹配到的网址保存到捕获组里,然后用m.Groups[1].Value得到这个捕获组所匹配到的内容
m.Groups[1].Value是一种对捕获的引用方式,还有另外一种引用方式m.Result("$1"),效果是一样的
 
普通捕获组是用1,2,3...这样的自然数对捕获组进行引用的
而命名捕获组可以不用去数捕获组的序号,直接通过捕获组的命称对它进行引用
 

C# code
string test = "<a href=\"/" title=\"床上等你\">CSDN</a>";
Match m = Regex.Match(test, @"<a\s*href=""(?<url>[^""]*)""[^>]*>", RegexOptions.IgnoreCase);
if (m.Success)
    MessageBox.Show(m.Groups["url"].Value);

 
至于捕获组的分组命名及序号排序规则,在后面说明
 
2、非捕获组的作用
非捕获组的作用有两个,第一个比较常用,第二个了解一下即可
 
(1)、节省系统资源,提高效率
在使用“ ¦”表示“或”的关系时,稍微复杂的情况,需要用()来限制“ ¦”的作用范围,否则即表示“ ¦”的左右两侧整体为“或”的关系,这是题外话,这里不详细说明了,还有用{num}来表达式匹配次数时࿰

更多推荐

c# 正则表代式的分组和匹配模式

本文发布于:2024-02-06 18:49:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750966.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:正则   模式   表代式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!