C#正则表达式忽略尾随字符

Bub*_*ubo 1 c# regex

我正在使用C#中的Regex,并且无法找到我正在寻找的这个示例.我有一个字符串,结构如下

string arg = "Type / Subtype: 001 / 002 Additional pointless information that we don't need"
Run Code Online (Sandbox Code Playgroud)

基本上我想知道的是如何在C#中格式化正则表达式以获得此字符串中的两个数字.最后的附加信息是动态的,因此我无法对该信息进行硬编码.

所以我现在就像这样:

Regex r = @Type / SubType: (\d+) / (\d+) "; 
Run Code Online (Sandbox Code Playgroud)

但我不知道最后要放弃什么来忽略尾随的角色,任何想法?

Dou*_*las 6

你不需要放任何东西.正则表达式允许给定字符串的部分匹配(除非您指定锚点,如^$).

Regex r = new Regex(@"^Type / Subtype: (\d+) / (\d+)");
string arg = "Type / Subtype: 001 / 002 Additional pointless information that we don't need";
Match match = r.Match(arg);
if (match.Success)
{
    string num1 = match.Groups[1].Value;    // "001"
    string num2 = match.Groups[2].Value;    // "002"
}
Run Code Online (Sandbox Code Playgroud)

需要注意的一件事是:"SubType"在你的模式中拼写使用CamelCase,但是"Subtype"在你的字符串中,如果它区分大小写(这是默认值),则正则表达式将不匹配.

编辑:要匹配最终字符串,只需添加带括号的通配符:

Regex r = new Regex(@"^Type / Subtype: (\d+) / (\d+) (.*)");
// ...
string remainder = match.Groups[3].Value;
Run Code Online (Sandbox Code Playgroud)

请注意,前面的空格是必需的,并且.与换行符不匹配(除非您使用该RegexOptions.Singleline选项).