我正在使用 C# 中的正则表达式,但未能找到我正在寻找的这个示例。我有一个结构如下的字符串
string arg = "Type / Subtype: 001 / 002 Additional pointless information that we don't need"
基本上我想知道的是如何在 C# 中格式化正则表达式以获得此字符串中的两个数字。最后的附加信息是动态的,所以我不能硬编码这些信息。
所以我现在拥有的好像是这样的:
Regex r = @Type / SubType: (\d+) / (\d+) ";
但我不知道在末尾放什么来忽略尾随字符,有什么想法吗?
请您参考如下方法:
你不需要放任何东西。正则表达式允许给定字符串的部分匹配(除非您指定 anchor ,例如 ^ 和 $)。
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"
}
需要注意的一件事:"SubType" 在您的模式中使用 CamelCase 拼写,但在您的字符串中使用 "Subtype",因此正则表达式不会如果区分大小写(这是默认设置)则匹配。
编辑:要匹配最终字符串,只需添加带括号的通配符:
Regex r = new Regex(@"^Type / Subtype: (\d+) / (\d+) (.*)");
// ...
string remainder = match.Groups[3].Value;
请注意,前面的空格是强制性的,并且 . 不匹配换行符(除非您使用 RegexOptions.Singleline 选项)。
