繁体   English   中英

如何在C#中执行此Regex?

[英]How to do this Regex in C#?

我已经尝试这样做了一段时间,但是由于某种原因却永远做不到。

会有这样的文字:

  • 12325 NHGKF
  • 34523公斤
  • 29302 MMKSEIE
  • 49504EFDF

规则是,在上面有1个空格 (或根本没有空格)之后,将精确地有5位数字 (或多或少),之后是一些文本,如上所示。 我想使用正则表达式模式进行MATCH并提取NUMBER和SPACE以及TEXT

这可能吗? 非常感谢你!

因为从您的措辞看来,您似乎需要能够成功匹配输入文本的每个组成部分,所以这里将为您提供命名组numberspacetext以便如果正则表达式匹配则可以轻松获得它们:

(?<number>\d{5})(?<space>\s?)(?<text>\w+)

在返回的Match ,如果Success==true则可以执行以下操作:

string number = match.Groups["number"].Value;
string text = match.Groups["text"].Value;
bool hadSpace = match.Groups["space"] != null;

表达式比较简单:

^([0-9]{5}) ?([A-Z]+)$

即5位数字,一个可选空格和一个或多个大写字母。 两端的锚确保整个输入匹配。

数字模式和字母模式周围的括号表示捕获组 1和2。 访问它们以获取数字和单词。

string test = "12345 SOMETEXT";
string[] result = Regex.Split(test, @"(\d{5})\s*(\w+)");

您可以使用Split方法:

public class Program
{
    static void Main()
    {
        var values = new[] 
        { 
            "12325 NHGKF", 
            "34523 KGJ", 
            "29302 MMKSEIE", 
            "49504EFDF" 
        };
        foreach (var value in values)
        {
            var tokens = Regex.Split(value, @"(\d{5})\s*(\w+)");
            Console.WriteLine("key: {0}, value: {1}", tokens[1], tokens[2]);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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