使用Linq在String上运行正则表达式

时间:2012-05-17 14:43:12

标签: c# regex string linq

我有一个String,我希望使用Linq运行一个正则表达式来将我的字符串减少到一个与我的reg ex匹配的较小的子字符串。

我的代码目前给出了错误

  

'char'不包含'Name'的定义,也没有扩展名   方法'Name'接受'char'类型的第一个参数可以是   结果

我的代码:

string variable = result.Name.Select(r => regEx.Match(r.Name).Groups[2].ToString());

Result.Name是自定义类中包含的字符串。

我做错了什么?我的语法/理解有什么问题?

4 个答案:

答案 0 :(得分:19)

你在找这样的东西吗?

string[] result = Regex.Matches(input, pattern)
                       .Cast<Match>()
                       .Select(match => match.Groups[2].Value)
                       .ToArray();

答案 1 :(得分:2)

您在一个字符串上调用SelectSelect将您的字符串视为一系列字符,因此lambda表达式中的rchar

如果你只想要一个字符串传递到你的正则表达式,而你只想要一个匹配,那么你根本就不需要LINQ。只需致电

string variable = regEx.Match(result.Name).Groups[2].ToString();

(我假设result.Name是您的单个字符串,基于您的示例代码。)

答案 2 :(得分:0)

不应该是

string variable = result.Select(r => regEx.Match(r.Name).Groups[2].ToString());

如果在Name字段上运行Select,则在字符串上运行它,该字符串是char

的数组

答案 3 :(得分:0)

这应该有用......

string result = result.Name.Select(@regEx => Regex.Match(match.Groups[2].ToString(), @regEx));