微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 具有特定图案的尾部的弦头

我收到的字符串可以等于任何“”str“Y”,其中any可以是任何字符串,字符串str可以等于“1”,“2”,“3”,“5”,“7”或“10”.我的目标是提取字符串.

我想出了以下代码

string pattern = ".* {1Y|2Y|3Y|5Y|7Y|10Y}";
string indexIDTorParse = group.ElementAt(0).IndexID;
Match result = Regex.Match(indexIDTorParse,pattern);
string IndexIDTermBit = result.Value;
string IndexID = indexIDTorParse.Replace($" {IndexIDTermBit}","");

但它没有给予任何权利.

解决方法

您应该使用 parentheses来定义一组模式,而不是大括号,您可以捕获任何部分并通过 Match.Groups直接访问它,而不是另外替换输入字符串:

string pattern = @"(.*) (?:[1-357]|10)Y";
string indexIDTorParse = group.ElementAt(0).IndexID;
Match result = Regex.Match(indexIDTorParse,pattern);
string IndexID = "";
if (result.Success) 
{
    IndexID = result.Groups[1].Value;
}

正则表达式匹配:

>(.*) – 组1:任意0个或多个字符,尽可能多(注意如果你需要将子字符串放到第一次出现的nY,使用(.*?),它将匹配少量字符可能在后续模式之前)
> – 一个空间
>(?:[1-357] | 10) – 1,2,3,5,7or10`
> Y – 一个Y字符.

regex demo.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐