如何使用 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 中返回不同/错误的结果