gpt4 book ai didi

c# - 用于根据模式将字符串拆分为两个集合的正则表达式

转载 作者:行者123 更新时间:2023-12-03 23:44:16 26 4
gpt4 key购买 nike

使用 C# Regex.Split 方法,我想拆分总是以 RepXYZ 开头的字符串,其中 XYZ 位是一个总是有 3 或 4 个字符的数字。
例子

  • "Rep1007$chkCheckBox"
  • "Rep127_Group_Text"

  • 结果应该是:
  • {"Rep1007","$chkCheckBox"}
  • {"Rep127","_Group_Text"}

  • 到目前为止,我已经尝试过 (Rep)[\d]{3,4} 和 ((Rep)[\d]{3,4})+ 但这两个都给了我不想要的结果

    最佳答案

    使用 Regex.Split通常会导致结果数组中出现空项或不需要的项。使用 (Rep)[\d]{3,4}Regex.Split , 会放 Rep没有将数字放入结果数组中。 (Rep[\d]{3,4})将把Rep并将数字放入结果中,但由于匹配在开始,因此数组中将有一个空项。
    我建议使用 Regex.Match这里:

    var match = Regex.Match(text, @"^(Rep\d+)(.*)$");
    if (match.Success)
    {
    Console.WriteLine(match.Groups[1].Value);
    Console.WriteLine(match.Groups[2].Value);
    }
    regex demo
    enter image description here
    细节:
  • ^ - 字符串开头
  • (Rep\d+) - 捕获组 1:Rep和任何一位或多位数字
  • (.*) - 捕获组 2:除换行符以外的任何一个或多个字符,尽可能多
  • $ - 字符串的结尾。

  • 使用基于环视的正则表达式可以更好地实现拆分方法:
    var results = Regex.Split(text, @"(?<=^Rep\d+)(?=[$_])");
    this regex demo . (?<=^Rep\d+)(?=[$_])在紧跟 Rep 之前的位置拆分字符串和字符串开头的一位或多位数字,紧随其后的是 $_ .

    关于c# - 用于根据模式将字符串拆分为两个集合的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63845014/

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