如何使用 regex.match 在 c# 中提取字符串的特定部分? [复制]

Posted

技术标签:

【中文标题】如何使用 regex.match 在 c# 中提取字符串的特定部分? [复制]【英文标题】:how can i extract a specific part of a string in c# with regex.match? [duplicate] 【发布时间】:2019-09-09 20:41:45 【问题描述】:

虽然这可能是重复的,但在阅读了类似的问题后,我无法完成这项工作。请在这个作业上寻求帮助,我是编程新手。

我正在C# 开发一个程序。我有一个文本,例如包含这句话:“我的作业版本 V0.90 来自”。我需要提取“V0.90”,这可能在 V0.90 到 V2.00 之间有所不同。它总是被"My homework version "" from" 包围,我需要提取它们之间的任何内容。这是我尝试过的:

string RetRegMatch;
Match Match1 = Regex.Match(Friends[a], @"My homework version (.+) from", RegexOptions.IgnoreCase);
RetRegMatch = Match1.Value;

但我在Match1.Value 这个:"My homework version V0.90 from" 中感到很高兴,我只希望(+.) 部分出现在Match1.Value 中。也就是说,我想在Match1.Value 这个:"V0.90"。我该怎么做?

【问题讨论】:

regex101.com/r/zA2WCm/1 如果你只需要提取版本号,那么不需要匹配整个字符串,只要搜索VX.XX模式,如果你确定它总是和中一样的格式你的例子,然后尝试像V[0-2]\.[0-9]+匹配V,然后是0到2之间的任何数字,然后是a。 (点)和一个或多个介于 0 和 9 之间的数值。 我实际上需要 V0.99 被文本 My homework version 和 from 包围。 V0.99 也可能出现在文本的其余部分,这就是为什么它由 Match1.Groups[1].Value 解决。但是感谢您的帮助! 【参考方案1】:

您需要的部分应该在捕获组中(您放在() 之间的部分)。尝试使用

访问它
Match1.Groups[1].Value

【讨论】:

以上是关于如何使用 regex.match 在 c# 中提取字符串的特定部分? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

与 C# 控制台应用程序中的相同代码相比,Regex.Match 在 Unity 中返回不同/错误的结果

C# (.net) RegEx.Match 换行符之间的子字符串 - 使用换行符作为正向超前限制

为啥 Regex.Match 只返回 1 个结果?

C# 正则表达式匹配与拆分相同的字符串

将 C# 正则表达式代码转换为 Java

用C#怎么提取a标签的超链接?