正则表达式.拆分的正确模式
本文关键字:模式 拆分 正则表达式 | 更新日期: 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])