c# 正则表达式提取()中的值

stringname="ProlificUSB-to-SerialCommPort(COM5)";我想用正则表达式提取()中COM到底是几。那个COM5是随机的,也许会变... string name ="Prolific USB-to-Serial Comm Port (COM5)";
我想用正则表达式提取()中COM到底是几。那个COM5是随机的,也许会变成COM23或者或者COM36

求大神的正则方式,我写的有问题,string pattern = @"(COM[1-9][0-9]?)$";
展开
 我来答
ajgk任
2023-03-22
知道答主
回答量:43
采纳率:0%
帮助的人:5434
展开全部

您的正则表达式基本正确,只需要将结尾的$符号去掉即可匹配包含COM的子串。另外,如果括号中只有COM后面的数字部分需要提取,可以使用正则表达式的捕获组功能,将COM和数字部分分别放在不同的捕获组中,然后只提取数字部分即可。

解释一下上述正则表达式的含义:

  • \b 匹配单词边界,用于确保COM前面不会有其他字符,避免匹配到类似ACOM1这样的字符串。

  • (COM\d+) 括号内是一个捕获组,匹配COM后面的一个或多个数字,\d表示数字字符,+表示匹配一次或多次。

  • \b 匹配单词边界,用于确保COM后面不会有其他字符,避免匹配到类似COM5A这样的字符串。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
greystar_cn
推荐于2016-11-26 · 知道合伙人软件行家
greystar_cn
知道合伙人软件行家
采纳数:16407 获赞数:17260
本人主要从事.NET C#方向的技术开发工作,具有10多年的各类架构开发工作经验。

向TA提问 私信TA
展开全部
\(COM(?<port>\d+)\)
取命名组 port

using System.Text.RegularExpressions;
// Regex Match code for C#
void MatchRegex()
{
// Regex match
RegexOptions options = RegexOptions.None;
Regex regex = new Regex(@"\(COM(?<port>\d+)\)", options);
string input = @"Prolific USB-to-Serial Comm Port (COM23)";
// Check for match
bool isMatch = regex.IsMatch(input);
if( isMatch )
{
// TODO: Do something with result
System.Windows.Forms.MessageBox.Show(input, "IsMatch");
}
// Get match
Match match = regex.Match(input);
if( match != null )
{
// TODO: Do something with result
System.Windows.Forms.MessageBox.Show(match.Value, "Match");
}
// Get matches
MatchCollection matches = regex.Matches(input);
for( int i = 0; i != matches.Count; ++i )
{
// TODO: Do something with result
System.Windows.Forms.MessageBox.Show(matches[i].Value, "Match");
}
// Numbered groups
for( int i = 0; i != match.Groups.Count; ++i )
{
Group group = match.Groups[i];

// TODO: Do something with result
System.Windows.Forms.MessageBox.Show(group.Value, "Group: " + i);
}
// Named groups
string groupA = match.Groups["port"].Value;

// TODO: Do something with result
System.Windows.Forms.MessageBox.Show(groupA, "Group: port");

}
追问
能写详细点吗?
追答
看上面代码
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式