正则表达式.拆分的正确模式

本文关键字:模式 拆分 正则表达式 | 更新日期: 2023-09-27 18:30:48

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

  • ABC123456DEF
  • 123456
  • ABC123456
  • 123456DEF

我想做的是从字符串中拆分数字,因此理想情况下,上述输出将是:

  • "ABC"、"123456"、"DEF
  • "123456"
  • "ABC"、"123456"
  • "123456"、"定义"

有人能够建议使用正则表达式.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);
        }
    }
}

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();

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

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