簡體   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