regex C#正则表达式与字符串不匹配

wixjitnu  于 2023-05-30  发布在  C#
关注(0)|答案(2)|浏览(160)

无法在C#中为字符串构建正确的正则表达式
我有一个字符串,看起来像这样:

string str1 = "f1/9999/d1/310822/orig1/GYD/dest1/SAW/f2/7777/d2/300922/orig2/SAW/dest2/GYD";

我试图构建一个正则表达式,它将匹配上面的字符串,但有以下条件:
(我将把上面的字符串拆分成子字符串,以便更好地解释我需要什么)
f1-是永远不会改变的文本“9999”应该始终是一个数字,这个子字符串的长度可以从2-6个字符变化
“d1”-这个文本永远不会改变“310822”-应该总是一个数字,这个子字符串的长度可以在2-6个字符之间变化
“orig 1”-是永不改变的文本
“GYD”-应始终为A-Z字符,长度始终为3 dest 1-此文本永不更改
“SAW”-应始终为A-Z字符,长度始终为3
“F2”-这段文字永远不会改变
“7777”-应该始终是一个数字,此子字符串的长度可以在2-6个字符之间变化
“d2”-此文本从未更改
“300922”-应该始终是一个数字,此子字符串的长度可以在2-6个字符之间变化
“orig 2”-此文本从未更改
“SAW”-应始终为A-Z字符,长度始终为3
“dest 2”-此文本永不更改
“GYD”-应始终为A-Z字符,长度始终为3
此外,所有的斜线都应该在正确的位置。
我试着像下面这样构建正则表达式,但它不起作用:

string str1 = "f1/123456/d1/310822/orig1/GYD/dest1/SAW/f2/7777/d2/300922/orig2/SAW/dest2/GYD";
if (Regex.IsMatch(str1, @"^[f1][/]\d{2,6}[/][d1][/]\d{2,6}[/][orig1][/]\b[a-zA-Z]{3}\b[/][dest1][/]\b[a-zA-Z]{3}\b[/][f2][/]\d{2,6}[/][d2][/]\d{2,6}[/][orig2][/]\b[a-zA-Z]{3}\b[/][dest2][/]\b[a-zA-Z]{3}\b$"))
        {
            richTextBox1.Text = "true";
        }
        else { richTextBox1.Text = "false"; }

我总是得到“false”知道如何为字符串str 1构建正确的正则表达式吗?

ar5n3qh5

ar5n3qh51#

试着跟随

string str1 = "f1/9999/d1/310822/orig1/GYD/dest1/SAW/f2/7777/d2/300922/orig2/SAW/dest2/GYD";
string pattern = @"^f1/(?'f1'\d{2,6})/d1/(?'num1'\d{2,6})/orig1/(?'alpha1'[A-Z]{3})/dest1/(?'alpha2'[A-Z]{3})/f2/(?'d1'\d{2,6})/d2/(?'num2'\d{2,6})/orig2/*(?'alpha3'[A-Z]{3})/dest2/(?'alpha4'[A-Z]{3})$";
Match match = Regex.Match(str1, pattern);
string f1 = match.Groups["f1"].Value;
string num1 = match.Groups["num1"].Value;
string alpha1 = match.Groups["alpha1"].Value;
string alpha2 = match.Groups["alpha2"].Value;
string d1 = match.Groups["d1"].Value;
string num2 = match.Groups["num2"].Value;
string alpha3 = match.Groups["alpha3"].Value;
string alpha4 = match.Groups["alpha4"].Value;
efzxgjgh

efzxgjgh2#

此表达式将为您的字符串返回“true”

string str1 = "f1/123456/d1/310822/orig1/GYD/dest1/SAW/f2/7777/d2/300922/orig2/SAW/dest2/GYD";
            if (Regex.IsMatch(str1, @"^[f][1][/]\d{2,6}[/][d][1][/]\d{2,6}[/][o][r][i][g][1][/]\b[a-zA-Z]{3}\b[/][d][e][s][t][1][/]\b[a-zA-Z]{3}\b[/][f][2][/]\d{2,6}[/][d][2][/]\d{2,6}[/][o][r][i][g][2][/]\b[a-zA-Z]{3}\b[/][d][e][s][t][2][/]\b[a-zA-Z]{3}\b$"))
            
            {
                richTextBox1.Text = "true";
            }
            else { richTextBox1.Text = "false"; }​

相关问题