c#正则表达式下面的文字?

时间:2013-07-30 09:00:54

标签: c# regex

我有数组字符串。

其中一个字符串:

  

myText =“[Date]。[Hierarchy]。[Year]。& [2005]。& [Q1]。& [Jan]”

[Date].[Hierarchy].[Year].&部分始终相同,但其余部分将根据今天的日期而变化。

所以今天就像[Date].[Hierarchy].[Year].&[2013].&[Q3].&[Jul]一样,但在数组中我还有其他类似[Date].[Hierarchy].[Year].&[2005].&[Q1].&[Jan].&[20]的字符串。

正则表达式也应该选择那些。

我只对像[Date].[Hierarchy].[Year].&[2005].&[Q1].&[Jan]", [Date].[Hierarchy].[Year].&[2005].&[Q1].&[Feb], [Date].[Hierarchy].[Year].&[2005].&[Q1].&[Mar], ...这样的数组中的字符串感兴趣。

我希望你能得到这种模式。

1 个答案:

答案 0 :(得分:1)

这个Regex应该这样做。当前年份设置为4位,如果您只希望它与2005匹配,请替换\d{4}位。

^\[Date\]\.\[Hierarchy\]\.\[Year\]\.&\[\d{4}\]\.&\[Q1\]\.&\[[A-Z-a-z]{3}\]$

结果如下:

   [Date].[Hierarchy].[Year].&[2005].&[Q1].&[Jan] // matches
   [Date].[Hierarchy].[Year].&[2013].&[Q3].&[Jul] // no match
   [Date].[Hierarchy].[Year].&[2005].&[Q1].&[Jan].&[20] // no match

编辑您的评论:确保在字符串声明之前放置@。

 var pattern = new Regex(@"^\[Date\]\.\[Hierarchy\]\.\[Year\]\.&\[\d{4}\]\.&\[Q1\]\.&\[[A-Z-a-z]{3}\]$");
      var matches = pattern.IsMatch("[Date].[Hierarchy].[Year].&[2005].&[Q1].&[Jan]");