c# - 正则表达式匹配具有相同模式的所有文件?
问题描述
需要编写一个正则表达式来匹配所有具有以下名称的文件:
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$");
谢谢 。
解决方案
让我们一步一步构建正则表达式:
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 开始模式,以$
one 结束并将块与\^\^
(请注意,escapement:我们想要^
作为普通字符,而不是作为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
推荐阅读
- azure - 将 arm 模板部署到 azure 时出现内部服务器错误
- azure - 在 Azure 中保护 api 到 api 连接
- python-3.x - 多线程爬虫运行一段时间后越来越慢
- python - 有什么方法可以更快地运行此代码?
- flurry - Flurry Analytics 用户路径通过事件参数
- spring-mvc - log4j 没有在我的控制器中显示映射的 url
- java - Jersey Web 服务 ExceptionMapper Oracle EPM HFMException
- javascript - 具有某些权重年龄值的对象值数组未按正确顺序排列
- django - 在其他表中显示外键计数
- c - 如何在一个 C 源文件中正确使用 2 个结构定义