正则表达式两个字符串之间的比较

时间:2014-04-22 20:25:17

标签: c# regex string

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

string structure = Bank*Loan*1.pdf;

string name = BankAutoLoanByCustomer1.pdf;

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

5 个答案:

答案 0 :(得分:1)

你测试它是这样的:

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

但是,正则表达式语法与您正在使用的语法不同。

您需要的一些特殊字符:

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

因此,您的structure应该更像:

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

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

答案 1 :(得分:0)

根据您的宽松标准:

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

答案 2 :(得分:0)

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

在这种情况下,您可以使用正则表达式

Bank.*Loan.*1\.pdf

句号意味着"除了换行符#34;之外的任何字符。该星代表" 0次或更多次"。 \#逃脱了 pdf 之前的时期,因为我们想要一个实际的句号,而不是"除了换行符#34;之外的任何字符。

答案 3 :(得分:0)

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

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

string name = "BankAutoLoanByCustomer1.pdf";

其次你应该问正确的问题 - 因为我看到你基本上想在目录中找到与特定模式相匹配的文件然后你可以使用

Directory.GetFiles("directoryName", structure)

答案 4 :(得分:0)

您可以使用Operators.LikeString方法。

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