我收到的字符串可以等于任何“”str“Y”,其中any可以是任何字符串,字符串str可以等于“1”,“2”,“3”,“5”,“7”或“10”.我的目标是提取字符串. 我想出了以下代码: string pattern
我想出了以下代码:
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.