当前位置 : 主页 > 编程语言 > c语言 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-25
我收到的字符串可以等于任何“”str“Y”,其中any可以是任何字符串,字符串str可以等于“1”,“2”,“3”,“5”,“7”或“10”.我的目标是提取字符串. 我想出了以下代码: string pattern
我收到的字符串可以等于任何“”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.

网友评论