Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Regex.Split的正确模式_C#_Regex - Fatal编程技术网

C# Regex.Split的正确模式

C# Regex.Split的正确模式,c#,regex,C#,Regex,在C#中,我接收到字符串,例如: ABC123456DEF 123456 ABC123456 123456DEF 我想做的是将数字从字符串中分割出来,因此理想情况下,上面的输出是: “ABC”、“123456”、“DEF” “123456” “ABC”,“123456” “123456”、“DEF” 是否有人能建议使用Regex.Split处理此问题的最佳方法 多谢各位 保罗 编辑: 由于我被降价了,我想我最好展示一下我已经拥有的东西。这只带来字母数字的,而不是数字的: string p

在C#中,我接收到字符串,例如:

  • ABC123456DEF
  • 123456
  • ABC123456
  • 123456DEF
我想做的是将数字从字符串中分割出来,因此理想情况下,上面的输出是:

  • “ABC”、“123456”、“DEF”
  • “123456”
  • “ABC”,“123456”
  • “123456”、“DEF”
是否有人能建议使用Regex.Split处理此问题的最佳方法

多谢各位

保罗

编辑:

由于我被降价了,我想我最好展示一下我已经拥有的东西。这只带来字母数字的,而不是数字的:

string pattern = @"\d+";
string barcode = "ABC123456DEF";
string[] result = Regex.Split(barcode, pattern);

试试这个:

//Based on:

//.NET 4.5

//Program that uses Match, Regex: C#

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        String subject = "ABC123456DEF\n123456\nABC123456\n123456DEF"
        Regex regex = new Regex(@"([a-zA-Z]+)|([0-9]+)");
        foreach (Match match in regex.Matches(subject))
        {
            MessageBox.Show(match.Value);
        }
    }
}

试试这个:

//Based on:

//.NET 4.5

//Program that uses Match, Regex: C#

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        String subject = "ABC123456DEF\n123456\nABC123456\n123456DEF"
        Regex regex = new Regex(@"([a-zA-Z]+)|([0-9]+)");
        foreach (Match match in regex.Matches(subject))
        {
            MessageBox.Show(match.Value);
        }
    }
}

另一个答案中的Regexp.match方法可能更好,但是如果您必须使用Regexp.split,那么以下模式应该可以工作

(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])

(?另一个答案中的Regexp.match方法可能更好,但是如果您必须使用Regexp.split,那么以下模式应该可以工作

(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])

(?Regex.Split正是您在这里应该使用的:

using System.Text.RegularExpressions;
using System.Linq;

string pattern = @"(\d+)";
string barcode = "ABC123456DEF";
string[] result = Regex.Split(barcode, pattern).Where(s => !string.IsNullOrEmpty(s)).ToArray();

Regex.Split正是您在这里应该使用的:

using System.Text.RegularExpressions;
using System.Linq;

string pattern = @"(\d+)";
string barcode = "ABC123456DEF";
string[] result = Regex.Split(barcode, pattern).Where(s => !string.IsNullOrEmpty(s)).ToArray();

你在用哪种语言?对不起,C#。我会修正这个问题。你为什么不尝试匹配而不是拆分?
[A-Z]+[0-9]+
你做了什么努力?我只想匹配
([0-9]+)|([A-Z]+)
,不需要
Regex.Split
这里你在运行哪种语言?对不起,C#。我会修正这个问题。你为什么不尝试匹配而不是拆分?
[A-Z]+[0-9]+
你做了什么?我只需要匹配
([0-9]+)([A-Z]+)
,不需要
Regex.Split