正则表达式具有更精细的结果

本文关键字:结果 正则表达式 | 更新日期: 2023-09-27 18:30:31

string STR = "The Quick Brown Fox Jumps";
string PTR = "[A-Z][a-z]+ [A-Z][a-z]+";
MatchCollection MCZ = Regex.Matches( STR, PTR ) ;   
if ( MCZ.Count > 0 )        
{
    string RTN ="";
    foreach ( Match x in MCZ )
    RTN += x.Value + "'n" ;
    MessageBox.Show( RTN );
}
else
    MessageBox.Show("Noop");

你好。。。我的结果是这样的;

The Quick
Brown Fox

但是,我想拥有;

The Quick
Quick Brown
Brown Fox
Fox Jumps

好提示,请!!

问候。

正则表达式具有更精细的结果

尝试: (?<=(?<v>'w+)'s+)(?<v>'w+)

我无法将直接结果链接到 regexstorm.net(因为有些括号不起作用?!?!?),但请尝试http://regexstorm.net/tester

请看表格。每场比赛包含两个组 v 的捕获。

样本:

using System;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
    public static void Main()
    {
        var input = "The Quick Brown Fox Jumps";
        var regex = new Regex(@"(?<=(?<v>'w+)'s+)(?<v>'w+)");
        foreach (var match in regex.Matches(input).Cast<Match>())
        {
            var value = string.Join(" ", match.Groups["v"].Captures.Cast<Capture>().Select(x => x.Value));
            Console.WriteLine(value);
        }
    }
}

输出将按预期进行。

正如我所说,有更好的方法可以做到这一点......

using System;
using System.Linq;
public class Test
{
    public static void Main()
    {
        string str = "The Quick Brown Fox Jumps";
        string result = "";
        var tokens = str.Split(' ');
        for(int i = 0; i < tokens.Length - 1; i += 1) {
            result += tokens[i] + ' ' + tokens[i + 1] + "'n";
        }
        Console.WriteLine(result);
    }
}