gpt4 book ai didi

c# - 正则表达式:获取字符串的匹配和 "not matching"部分

转载 作者:行者123 更新时间:2023-12-04 08:41:19 25 4
gpt4 key购买 nike

我有一个这样的字符串:

%1n--%2n##%12n
我需要所有匹配 %1n、%2n、%12n 的匹配项,我还需要所有不匹配的部分。例如:--和##
我的正则表达式模式是 (%\d*n)(?!(%\d*n)*) .
我得到匹配的部分 (%1n, ...) 以及所有非匹配部分的空匹配。但我的例子的结果应该是:
  • 匹配:%1n
  • 匹配:--
  • 匹配:%2n
  • 匹配:##
  • 匹配:%12n

  • 有人可以告诉我正确的正则表达式模式以获得我的预期结果吗?

    最佳答案

    在 C# 中,你可以使用 Regex.Split使用用捕获括号包裹的正则表达式还返回匹配之间的所有子字符串:

    var text = "%1n--%2n##%12n";
    var result = Regex.Split(text, @"(%\w+)").Where(x => !String.IsNullOrWhiteSpace(x)).ToList();
    foreach (var s in result)
    Console.WriteLine(s);
    C# demo .输出:
    %1n
    --
    %2n
    ##
    %12n
    (%\w+)正则表达式匹配并捕获到组 1 a %字符,然后是任何一个或多个单词字符。如果您只需要匹配 ASCII 字母/数字,请使用 (%[A-Za-z0-9]+) .
    VB.NET demo , 也:
    Dim pattern As String = "(%\w+)"
    Dim s As String = "%1n--%2n##%12n"
    Dim matches As String() = System.Text.RegularExpressions.Regex.Split(s, pattern)
    For Each m As String In matches
    If Not String.IsNullOrEmpty(m) Then
    Console.WriteLine(m)
    End If
    Next

    关于c# - 正则表达式:获取字符串的匹配和 "not matching"部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64552675/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com