如何使用C#正则表达式提取尖括号<>间的字符串?
在C#中使用正则表达式提取尖括号<>之间的字符串
没问题!既然你已经掌握了提取双引号内容的正则,那提取尖括号里的内容逻辑其实非常相似,咱们直接看解决方案和细节:
核心正则表达式
你可以用这个正则来匹配尖括号间的内容:
<([^>]*)>
逻辑拆解(和你熟悉的双引号正则对比)
你之前用的"""([^"]*)"""是匹配双引号间的内容,逻辑是:
"匹配左双引号([^"]*)捕获任意不是右双引号的字符(零个或多个)"匹配右双引号
而尖括号的正则只是把双引号换成了尖括号:
<匹配左尖括号(不需要转义,在正则里它不是特殊元字符)([^>]*)捕获任意不是右尖括号的字符(这部分和双引号的逻辑完全一致)>匹配右尖括号
C# 代码示例
下面是完整的C#代码,演示如何从字符串中提取所有尖括号内的内容:
using System; using System.Text.RegularExpressions; class Program { static void Main() { // 示例输入字符串 string targetString = "请发送邮件到<myname@11.com>,或者联系<admin@company.org>"; // 正则模式(用@符号避免C#字符串的转义问题,更简洁) string regexPattern = @"<([^>]*)>"; // 提取所有匹配项 foreach (Match match in Regex.Matches(targetString, regexPattern)) { // Groups[1] 对应正则里的捕获组,也就是尖括号内的内容 // Groups[0] 是整个匹配的<xxx>字符串,不是我们要的 Console.WriteLine("提取到的内容: " + match.Groups[1].Value); } } }
运行这段代码,输出会是:
提取到的内容: myname@11.com 提取到的内容: admin@company.org
注意事项
- 如果你的字符串中存在嵌套的尖括号(比如
<outer<inner>>),这个简单正则就会失效,因为[^>]*会匹配到第一个>就停止。这种复杂场景需要递归正则,但大部分日常场景里,上面的正则已经足够用了。 - 如果你只需要提取第一个匹配的内容,可以用
Regex.Match()代替Regex.Matches(),然后判断match.Success后再取Groups[1].Value。
内容的提问来源于stack exchange,提问作者Aousaf Rashid
相关产品推荐
相关产品推荐

