我有数组字符串。
其中一个字符串:
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], ...
这样的数组中的字符串感兴趣。
我希望你能得到这种模式。
答案 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]");