假设我们有一个字符串L
列表,给定字符串S
。我们有一个像(\w+)\-(\w+)
这样的正则表达式,我们希望得到L
匹配S
regexp的所有$1
个元素。怎么做这个?
答案 0 :(得分:1)
你可以这样做:
// sample data
string[] L = new string[] { "bar foo", "foo bar-zoo", "bar-", "zoo bar-foo" };
string S = "bar";
Regex regex = new Regex(@"(\w+)\-(\w+)");
string[] res = L.Where(l => {
Match m = regex.Match(l);
if (m.Success) return m.Groups[1].Value == S;
else return false;
}).ToArray();
并获取
foo bar-zoo
zoo bar-foo
可能更适合您的一种更简单的方法是在正则表达式中包含S
:
Regex regex = new Regex(S + @"\-(\w+)");
string[] res = L.Where(l => regex.Match(l).Success).ToArray();