0

我有一个需要使用正则表达式拆分的字符串。我可以在 .NET 中使用拆分方法,但要返回的字符串可能是第一个或第二个子字符串。此正则表达式将成为应用程序中的可配置设置。

一个典型的字符串是 9234567X123456-789

我创建了以下正则表达式

     [-09]([^X]*)X

返回第一个子字符串。但是,我丢失了第一个数字,返回 234567。

有任何想法吗?

谢谢。

4

2 回答 2

2

是的,您丢失了第一个数字,因为它被[-09]零件占用了。目前还不清楚为什么你有这个。我怀疑你只是想要:

([^X]*)X

换句话说,“捕获第一个 X 之前的所有内容,并检查是否真的存在 X。”

示例代码:

using System;
using System.Text.RegularExpressions;

public class Test
{
    static void Main(string[] args)
    {
        Regex regex = new Regex("([^X]*)X");
        string input = "9234567X123456-789";
        Match match = regex.Match(input);
        // TODO: Check for success
        Console.WriteLine(match.Groups[1]); // 9234567
    }
}
于 2012-10-26T14:39:14.740 回答
0

我假设您希望字符串以-,09. 如果这是真的,那么您需要的正则表达式(并且在这里使用正则表达式是矫枉过正,除非您还想执行某种验证)是

([-09]\d*)X

或者

([-09][^X]*)X

如果您在之前的部分中允许任何类型的字符(不仅是数字)X

编辑

可能已经了解您在阅读示例字符串时要查找的内容:

9234567X123456-789

您需要第一组或第二组,每个组都可以有数字或连字符 ( -)。您可以通过创建两个组来解决此问题:

([\d\-]+)X([\d\-]+)

然后您可以查看 Jon Skeet 的答案以获取数据。你可以使用

match.Groups[1]); //to get 9234567

或者

match.Groups[2]); //to get 123456-789
于 2012-10-26T14:54:09.017 回答