我需要能够在C#/ Regex中解析字符串中的一系列数字。数字可以是一个或多个数字长,并且始终位于字符串的末尾,并且在单词“ID”之后,例如:
“测试123测试 - ID 589”
在这种情况下,我需要能够选出589。
有什么建议吗?我使用过的一些代码会找出所有不符合我要求的数字。
由于
答案 0 :(得分:3)
我会使用模式@“ID(\ d +)$”
using System.Text.RegularExpressions;
var s = "Test 123 Test - ID 589";
var match = Regex.Match(s, @"ID (\d+)$");
int? id = null;
if (match.Success) {
id = int.Parse(match.Groups[1].Value);
}
答案 1 :(得分:1)
string resultString = null;
try {
Regex regexObj = new Regex(@"ID (?<digit>\d+)$");
resultString = regexObj.Match(subjectString).Groups["digit"].Value;
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
答案 2 :(得分:1)
foo.Substring(foo.IndexOf( “ID”)+ 3)
答案 3 :(得分:0)
这是最具体的模式,如果并非每一行都以您感兴趣的数字结尾:
@"\bID\s+(\d+)$"
注意:目标号码将位于捕获组1中。
但是,根据您的描述,您可以使用它:
@"\d+$"
它只是在每行的最末端查找一串数字。这就是我要去的地方。