gpt4 book ai didi

c# - 从结果中的字符串中排除重复项

转载 作者:行者123 更新时间:2023-12-04 13:38:41 26 4
gpt4 key购买 nike

我正在尝试修改此正则表达式,使其不匹配重复项。

当前正则表达式 :

[\""].+?[\""]|[^ ]+

示例字符串 :
".doc" "test.xls", ".doc","me.pdf", "test file.doc"

预期结果 :
".doc"
"test.xls"
"me.pdf"

但不是
".doc"
"test.xls"
".doc"
"me.pdf"

备注 :
  • 文件名可能有空格,例如test file.doc
  • 项目可以用空格或逗号或两者分隔
  • 字符串可以有引号,也可以没有引号,例如.doc".doc" .
  • 最佳答案

    在 C# 中,您可以使用一个简单的正则表达式来提取所有有效匹配项并使用 .Distinct()只保留唯一值。

    正则表达式很简单:

    "(?<ext>[^"]+)"|(?<ext>[^\s,]+)

    regex demo ,您只需要组“ext”值。

    详情
  • "(?<ext>[^"]+)" - " ,(“ext”组)除 " 之外的任何 1+ 个字符然后 "
  • | - 或
  • (?<ext>[^\s,]+) - (group "ext") 1+ 个除空格和逗号以外的字符

  • C# code片段:
    var text = "\".doc\" \"test.xls\", \".doc\",\"me.pdf\", \"test file.doc\".doc \".doc\"";
    Console.WriteLine(text); // => ".doc" "test.xls", ".doc","me.pdf", "test file.doc".doc ".doc"
    var pattern = "\"(?<ext>[^\"]+)\"|(?<ext>[^\\s,]+)";
    var results = Regex.Matches(text, pattern)
    .Cast<Match>()
    .Select(x => x.Groups["ext"].Value)
    .Distinct();
    Console.WriteLine(string.Join("\n", results));

    输出:
    .doc
    test.xls
    me.pdf
    test file.doc

    关于c# - 从结果中的字符串中排除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60239621/

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