[英]C# Regex Matching, Name
我对常规表达感到恐惧,可以使用一些帮助。
我得到类似“Tell:IIDString: 456456456:Somebody's Name "
字符串,但是有时数字为零。而且该名称始终以空格结尾。我想提取名称,并认为Regex是解决方法,但是我似乎无法使其正常工作。
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);
}
}
这是一个正则表达式,它将与整个样本输入匹配,捕获名称并对其进行修剪:
^Tell:IIDString:\s*\d+:(?<name>[A-Z' ]+?)\s*$
请参阅IDEONE演示 :
string txt = "Tell:IIDString: 456456456:Somebody's Name ";
Match m = Regex.Match(txt, @"^Tell:IIDString:\s*\d+:([A-Z' ]+?)\s*$", RegexOptions.IgnoreCase);
if (m.Success)
Console.WriteLine(m.Groups["name"].Value); // Note the group is referred by its name
正则表达式匹配:
^
-字符串开头 Tell:IIDString:
-给定字符的文字序列 \\s*
-0个或多个空格符号 \\d+:
-1个或多个数字后跟一个:
(?<name>[AZ' ]+?)
-一个命名的捕获组,我们稍后将使用该名称来引用,匹配1个或多个拉丁字符,撇号和文字空间(如果可能有\\s
替换为\\s
空格或\\p{Zs}
如果只允许水平空格) \\s*$
-字符串末尾的0或多个空格符号( $
是行锚的末尾)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.