繁体   English   中英

正则表达式的正确模式

[英]Correct pattern for Regex.Split

在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);
        }
    }
}

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])

暂无
暂无

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

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