我想检查以“文本”开头,下一个为数字。 我想用正则表达式来做,但是做得不好。
下面是示例,我只想了解 “ Test2018.txt”,“ Test2019.txt”
List<string> fileNames = new List<string>() {"Test2018.txt", "Test2019.txt", "TestEvent2018.txt", "TestEvent2019.txt"};
fileNames.Where(p => Regex.IsMatch(p, "Test^[0-9]+*") == true);
答案 0 :(得分:2)
您可以使用此正则表达式:
^Test[0-9]+\.txt$
哪里
^
表示行的开头。Test
与文字文本匹配。[0-9]
匹配任何0-9的数字。+
至少一次。\.
与句点匹配。txt
与文字文本匹配。$
表示行的结尾。在C#中:
var matchingFiles = fileNames.Where(p => Regex.IsMatch(p, @"^Test[0-9]+\.txt$"));
答案 1 :(得分:1)
^
匹配字符串的开头,因此将其放在模式中间并不有意义。我认为您也用.*
来表示*
,但是在检查IsMatch
而没有结尾锚的情况下,无需检查字符串的其余部分。 (这意味着[0-9]+
也可以成为[0-9]
。)
也不需要在布尔值上使用== true
。
fileNames.Where(p => Regex.IsMatch(p, "^Test[0-9]"))