我收到的字符串可以等于any + " " + str + "Y"
,其中any
可以是任何字符串,而字符串str
可以等于"1"
,"2"
,"3"
,"5"
,"7"
或"10"
。我的目标是提取字符串any
。
我想出了以下代码:
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}", "");
但是它没有给出正确的any
。
答案 0 :(得分:6)
您应该使用parentheses来定义一组模式,而不要使用括号,并且可以捕获 any
部分,并直接通过{{3}访问它},而不是另外替换输入字符串:
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 ,
7 or
10` Y
-一个Y
字符。请参见Match.Groups
。