C# 正则表达式,或者

Mar*_*ark 3 c# regex

我有一个在正则表达式中解析的字符串:

"one [two] three [four] five"
Run Code Online (Sandbox Code Playgroud)

我有正则表达式,可以将括号内的文本提取到 中<bracket>,但现在我想将其他内容(一、三、五)添加到 中<text>,但我希望有单独的匹配项。

所以它要么是 的匹配<text>,要么是 的匹配<bracket>。使用正则表达式可以吗?

所以匹配列表看起来像:

text=one, bracketed=null 
text=null, bracketed=[two] 
text=three, bracketed=null 
text=one, bracketed=[four]
text=five, bracketed=null 
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

这就是你所追求的吗?基本上 | 用于正则表达式中的交替。

using System;
using System.Text.RegularExpressions;

public class Test 
{
    public static void Main()
    {
        string test = "one [two] three [four] five";
        Regex regex = new Regex(@"(?<text>[a-z]+)|(?<bracketed>\[[a-z]+\])");

        Match match = regex.Match(test);
        while (match.Success)
        {
            Console.WriteLine("text: {0}; bracketed: {1}",
                              match.Groups["text"],
                              match.Groups["bracketed"]);
            match = match.NextMatch();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)