Regex两个字符串之间的比较

本文关键字:字符串 之间 比较 两个 Regex | 更新日期: 2023-09-27 17:59:41

我需要将字符串与标准字符串结构进行比较。

string structure = Bank*Loan*1.pdf;
string name = BankAutoLoanByCustomer1.pdf;

如何将名称字符串与标准字符串结构进行比较?我想弄清楚名字的骨架和结构的骨架是否相同。

Regex两个字符串之间的比较

您这样测试它:

bool matches = Regex.IsMatch(name, structure);

但是,regex语法与您使用的语法不同。

您需要的几个特殊字符:

.=任意单个字符
*=0次或更多次
'=转义符:按字面意思处理下一个字符,而不是作为特殊字符。

因此,您的structure应该更像:

string structure = "Bank.*Loan.*1''.pdf";

请注意,实际上必须使用两个斜杠来转义字符,因为C#字符串也使用'作为转义字符。

您可以使用Operators.LikeString方法。

bool isMatch = Operators.LikeString("BankAutoLoanByCustomer1.pdf", "Bank*Loan*1.pdf", Microsoft.VisualBasic.CompareMethod.Text);

基于您的宽松标准:

Regex.IsMatch(name, @"^Bank.*Loan.*1'.pdf$");

所以你想匹配银行任何东西贷款所有东西1.pdf?

在这种情况下,您可以使用Regex

Bank.*Loan.*1'.pdf

句点的意思是"除换行符外的任何字符"。星号的意思是"0次或更多次"。''转义pdf之前的句点,因为我们想要一个实际的句点,而不是"除换行符外的任何字符"。

首先,您应该学习如何在c#中声明字符串-您需要使用双引号"

string structure = "Bank*Loan*1.pdf";
string name = "BankAutoLoanByCustomer1.pdf";

其次,你应该问正确的问题——正如我所看到的,你基本上想在一个目录中找到与特定模式匹配的文件,然后你可以使用

Directory.GetFiles("directoryName", structure)