正则表达式以匹配具有相同模式的所有文件?

时间:2019-01-22 08:01:44

标签: c# regex

需要编写一个正则表达式,该表达式将匹配所有具有以下名称的文件:

ABCD^^A12397_4^^A12397_5^^ABCServer2^^1^^20190117654345
ABCDE^^A12394567_4^^A165557_5^^ABCServer5^^3^^20180117654345

基本上需要匹配以下模式:

Alphabets^^AlphaNumericWithSpecialChracter^^ANWSC^^ANWSC^^Numeric^^Numeric

我尝试过的事情:

Regex.IsMatch("ABCD^^A12397_4^^A12397_5^^Server2^^1^^20190117654345", "^ABCD\\^\\^A12397_4\\^\\^A12397_5\\^\\^Server2\\^\\^1\\^\\^20190117654345$");

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试以下模式:^[A-Za-z](\^\^[\w_]+){3}(\^\^\d+){2}$

说明:

[A-Za-z] =字母

(\^\^[\w_]+){3} = ^^AlphaNumericWithSpecialChracter重复了3次(使用特殊字符_

(\^\^\d+){2} = ^^Numeric重复了两次

答案 1 :(得分:1)

让我们逐步构建正则表达式:

Alphabets^^AlphaNumericWithSpecialChracter^^ANWSC^^ANWSC^^Numeric^^Numeric

假设

Alphabets                       - One or more A..Z or a..z letters          - [A-Za-z]+
AlphaNumericWithSpecialChracter - One or more A..Z, a..z, 0..9 letters or _ - [A-Za-z0-9_]+
ANWSC                           - One or more A..Z, a..z, 0..9 letters      - [A-Za-z0-9]+
Numeric                         - One or more 0..9 letters                  - [0-9]+

现在,我们应该从^锚开始模式,以$结束模式,然后将块与\^\^结合起来(请注意,转义:我们希望^作为普通的字符,而不是 anchor ):

string pattern = 
  @"^[A-Za-z]+\^\^[A-Za-z0-9_]+\^\^[A-Za-z0-9]+\^\^[A-Za-z0-9]+\^\^[0-9]+\^\^[0-9]+$";

或者,如果我们想增加可读性,可以将其表示为

string pattern = string.Join(@"\^\^", 
  "^" +             // String start
  "[A-Za-z]+",      // Alphabets
  "[A-Za-z0-9_]+",  // AlphaNumericWithSpecialChracter
  "[A-Za-z0-9]+",   // ANWSC 
  "[A-Za-z0-9]+",   // ANWSC 
  "[0-9]+",         // Numeric
  "[0-9]+" +        // Numeric 
  "$");             // End of string