繁体   English   中英

C#正则表达式匹配,名称

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM