我正在使用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)
但我不知道最后要放弃什么来忽略尾随的角色,任何想法?
你不需要放任何东西.正则表达式允许给定字符串的部分匹配(除非您指定锚点,如^和$).
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选项).
| 归档时间: |
|
| 查看次数: |
461 次 |
| 最近记录: |