需要从下面提到的字符串中获取三个字符串,需要C#和ASP.NET中的可能解决方案:
"componentStatusId==2|3,screeningOwnerId>0"
我需要使用C#中的正则表达式来获取'2','3'和'0'
h43kikqp1#
如果你想要的只是一个字符串中的数字,那么你可以在下面的代码中使用正则表达式:
string re = "(?:\\b(\\d+)\\b[^\\d]*)+"; Regex regex = new Regex(re); string input = "componentStatusId==2|3,screeningOwnerId>0"; MatchCollection matches = regex.Matches(input); for (int ii = 0; ii < matches.Count; ii++) { Console.WriteLine("Match[{0}] // of 0..{1}:", ii, matches.Count - 1); DisplayMatchResults(matches[ii]); }
函数DisplayMatchResults取自这个Stack Overflow答案。上面的控制台输出是:
DisplayMatchResults
Match[0] // of 0..0: Match has 1 captures Group 0 has 1 captures '2|3,screeningOwnerId>0' Capture 0 '2|3,screeningOwnerId>0' Group 1 has 3 captures '0' Capture 0 '2' Capture 1 '3' Capture 2 '0' match.Groups[0].Value == "2|3,screeningOwnerId>0" match.Groups[1].Value == "0" match.Groups[0].Captures[0].Value == "2|3,screeningOwnerId>0" match.Groups[1].Captures[0].Value == "2" match.Groups[1].Captures[1].Value == "3" match.Groups[1].Captures[2].Value == "0"
因此,可以在match.Groups[1].Captures[...]中看到这些数字。另一种可能性是使用Regex.Split,其中模式是“non digits”。下面代码的结果将需要后处理以删除空字符串。请注意,Regex.Split没有字符串Split方法的StringSplitOptions.RemoveEmptyEntries。
match.Groups[1].Captures[...]
Regex.Split
Split
StringSplitOptions.RemoveEmptyEntries
string input = "componentStatusId==2|3,screeningOwnerId>0"; string[] numbers = Regex.Split(input, "[^\\d]+"); for (int ii = 0; ii < numbers.Length; ii++) { Console.WriteLine("{0}: '{1}'", ii, numbers[ii]); }
输出结果是:
0: '' 1: '2' 2: '34' 3: '0'
ac1kyiln2#
使用以下正则表达式并从组1、2和3中捕获值。
componentStatusId==(\d+)\|(\d+),screeningOwnerId>(\d+)
Demo为了将componentStatusId和screeningOwnerId泛化为任意字符串,可以在正则表达式中使用\w+,使其更通用。
componentStatusId
screeningOwnerId
\w+
\w+==(\d+)\|(\d+),\w+>(\d+)
Updated Demo
2条答案
按热度按时间h43kikqp1#
如果你想要的只是一个字符串中的数字,那么你可以在下面的代码中使用正则表达式:
函数
DisplayMatchResults
取自这个Stack Overflow答案。上面的控制台输出是:
因此,可以在
match.Groups[1].Captures[...]
中看到这些数字。另一种可能性是使用
Regex.Split
,其中模式是“non digits”。下面代码的结果将需要后处理以删除空字符串。请注意,Regex.Split
没有字符串Split
方法的StringSplitOptions.RemoveEmptyEntries
。输出结果是:
ac1kyiln2#
使用以下正则表达式并从组1、2和3中捕获值。
Demo
为了将
componentStatusId
和screeningOwnerId
泛化为任意字符串,可以在正则表达式中使用\w+
,使其更通用。Updated Demo