Skip to main content
 首页 » 编程设计

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

2024年01月26日30小虾米

我正在使用 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 选项)。