[英]How to do this Regex in C#?
我已经尝试这样做了一段时间,但是由于某种原因却永远做不到。
会有这样的文字:
规则是,在上面有1个空格 (或根本没有空格)之后,将精确地有5位数字 (或多或少),之后是一些文本,如上所示。 我想使用正则表达式模式进行MATCH并提取NUMBER和SPACE以及TEXT 。
这可能吗? 非常感谢你!
因为从您的措辞看来,您似乎需要能够成功匹配输入文本的每个组成部分,所以这里将为您提供命名组number
, space
和text
以便如果正则表达式匹配则可以轻松获得它们:
(?<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.