【发布时间】:2016-01-22 09:52:32
【问题描述】:
我在普通快递方面很糟糕,需要一些帮助。
我得到类似“Tell:IIDString: 456456456:Somebody's Name " 的字符串,但有时数字为零。此外,名称总是以空格结尾。我想提取名称并认为正则表达式是可行的方法,但我似乎无法让它工作。
static void Main(string[] args)
{
string txt = "Tell:IIDString: 456456456:Somebody's Name ";
// txt = "Tell:IIDString: 0:Somebody's Name ";'
Match m = Regex.Match(txt, @"Tell:IIDString: \d+:([A-z\']+)\.\w", RegexOptions.IgnoreCase);
if (m.Success)
{
Console.WriteLine(m.Value);
}
}
【问题讨论】:
-
我认为
\.\w最后会导致问题。还要在[A-z\' ]中添加空格(因为名称之间可以有空格)并改为打印m.Groups[1].Value。 -
我试过 "Tell:IIDString: \d+:([A-z\' ]+)" 会匹配,但不提取名称
-
如果您的输入字符串格式始终相同,您可以拆分字符串并在不使用正则表达式的情况下获取名称值。 string txt = "Tell:IIDString: 456456456:Somebody's Name";字符串名称 = txt.Split(':')[3];
-
Console.WriteLine(m.Value);将打印整个字符串,因为它是第一个匹配项。您在模式([A-z\']+)中使用组,因此您必须打印Console.WriteLine(m.Groups[1].Value) -
只需在模式末尾放置空格。
"Tell:IIDString: \d+:([A-z\' ]+) "