(正则表达式)要检查以指定文本和下一个数字开头

时间:2018-07-27 00:20:52

标签: c# regex

我想检查以“文本”开头,下一个为数字。 我想用正则表达式来做,但是做得不好。

下面是示例,我只想了解 “ 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);

2 个答案:

答案 0 :(得分:2)

您可以使用此正则表达式:

^Test[0-9]+\.txt$

哪里

  1. ^表示行的开头。
  2. Test与文字文本匹配。
  3. [0-9]匹配任何0-9的数字。
  4. +至少一次。
  5. \.与句点匹配。
  6. txt与文字文本匹配。
  7. $表示行的结尾。

在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]"))