在c#net中使用带有linq的正则表达式从数组中查找索引

在c#net中使用带有linq的正则表达式从数组中查找索引,c#,regex,linq,C#,Regex,Linq,我有一个数组,其中包含如下元素 dec.02 Novemeber-2 Oct-6 . . . 现在假设我想找到dec.02的索引 假设一个数组代替了dec.02,那么可能存在dect-02。 所以我想使用linq和正则表达式来查找索引。 日期可以是任何格式 Regex will be (dec|december)\W*02 有人能告诉我们如何使用正则表达式和linq从数组中查找索引吗你在找类似的东西吗 String[] data = new String[] { "dec.02",

我有一个数组,其中包含如下元素

dec.02
Novemeber-2
Oct-6
.
.
.
现在假设我想找到dec.02的索引 假设一个数组代替了dec.02,那么可能存在dect-02。 所以我想使用linq和正则表达式来查找索引。 日期可以是任何格式

Regex will be (dec|december)\W*02

有人能告诉我们如何使用正则表达式和linq从数组中查找索引吗你在找类似的东西吗

String[] data = new String[] {
  "dec.02",
  "Novemeber-2",
  "Oct-6",
  ...
};

// All the indexes
int[] indice = data
  .Select((line, index) => new {
     line = line,
     index = index})
  .Where(item => Regex.IsMatch(item.line, "Your regular expression"))
  .Select(item => item.index)
  .ToArray();
如果您只需要第一个此类索引(-1,如果未找到索引):


如果我正确理解您的问题,这可能是一个解决方案:

Regex regex = new Regex(@"(dec|december)\W*02");
string[] dates = { "dec.02", "Novemeber-2", "Oct-6" };
int i = dates.Length - dates.SkipWhile(s => !regex.IsMatch(s)).Count(); // based-0 index

不,我想要元素的特定索引。上面返回一个数组。@user3138879:在这种情况下,请使用
FirstOrDefault()
而不是
ToArray()
,请参见我的编辑。
Regex regex = new Regex(@"(dec|december)\W*02");
string[] dates = { "dec.02", "Novemeber-2", "Oct-6" };
int i = dates.Length - dates.SkipWhile(s => !regex.IsMatch(s)).Count(); // based-0 index