匹配模式dddG-xyz的正则表达式

时间:2019-03-20 18:22:21

标签: c# regex

我的尝试:

string exp1 = "\\d+G-";
string z = Regex.Match("CN=314G-VK1,OU=Grupper,OU=314,OU=Skole,OU=03Skien,DC=login,DC=sk-asp,DC=no",exp1).Value;
Console.WriteLine(z);

我想从字符串 z 中匹配 314G-VK1

在哪里

314 是十进制,可以是任意数字。说 125632588

G-是恒定的。

VK1 可以是字符或十进制,但长度仅为3,例如 er5

我如何满足要求?

从我的代码中,我仅得到输出 314G-。我尝试了几种方法,但现在对我无济于事。

3 个答案:

答案 0 :(得分:3)

您可以使用

string exp1 = @"\d+G-\w{3}";

请参见regex demo

\w{3}模式将匹配3个字符,即大部分为字母,数字和下划线。您可以根据需要进行调整,例如要仅匹配3个大写ASCII字母或数字,可以使用[A-Z0-9]{3}。要同时包含小写字母,请将它们添加到字符类[A-Za-z0-9]{3}中。

Regulex regex graph

enter image description here

.NET正则表达式测试结果:

enter image description here

C# code demo

string exp1 = @"\d+G-\w{3}";
string s = "CN=314G-VK1,OU=Grupper,OU=314,OU=Skole,OU=03Skien,DC=login,DC=sk-asp,DC=no";
string z = Regex.Match(s, exp1)?.Value;
Console.WriteLine(z); // => 314G-VK1

答案 1 :(得分:3)

您几乎是正确的,但是您只需在 G-之后添加[0-9a-zA-Z]{3}

string exp1 = "\\d+G-[0-9a-zA-Z]{3}";
string z = Regex.Match("CN=314G-VK1,OU=Grupper,OU=314,OU=Skole,OU=03Skien,DC=login,DC=sk-asp,DC=no", exp1).Value;
Console.WriteLine(z);

查看演示here

答案 2 :(得分:0)

尝试一下: 字符串exp1 = @“ \ d + G- [a-zA-Z0-9] {3}”

[a-zA-Z0-9] {3}将与3个字符的字母数字字符串匹配。