需要编写一个正则表达式,该表达式将匹配所有具有以下名称的文件:
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$");
谢谢。
答案 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