Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 第二个非捕获组?_C#_Regex - Fatal编程技术网

C# 第二个非捕获组?

C# 第二个非捕获组?,c#,regex,C#,Regex,我这里有一个例子: 基本上,我有一个非捕获正则表达式组。但是,我想扩展它,这样它就不包括DC=之后的任何内容 我的非捕获组中有DC=,但它仍然包含DC=和之间的文本 这是我的正则表达式,我是新手 (?:OU=|CN=|DC=)(\w+[^,;])(?:,|$) 示例字符串: CN=me,OU=test,OU=test,DC=donot,DC=includeme 任何帮助都会很好 我只想包括:我的测试 谢谢 只需从非捕获组中删除DC=,然后打印组索引1,以获得所需的输出 (?:OU=|CN=)

我这里有一个例子:

基本上,我有一个非捕获正则表达式组。但是,我想扩展它,这样它就不包括DC=之后的任何内容

我的非捕获组中有DC=,但它仍然包含DC=和之间的文本

这是我的正则表达式,我是新手

(?:OU=|CN=|DC=)(\w+[^,;])(?:,|$)
示例字符串:

CN=me,OU=test,OU=test,DC=donot,DC=includeme
任何帮助都会很好

我只想包括:我的测试

谢谢

只需从非捕获组中删除DC=,然后打印组索引1,以获得所需的输出

(?:OU=|CN=)(\w+[^,;])(?:,|$)

非正则表达式解决方案如何:

var input = "CN=me,OU=test,OU=test,DC=donot,DC=includeme";

var commaSplit = input.Split(',');

var keyValues = commaSplit.Select(x =>
{
    var equalsSplit = x.Split('=');
    return new KeyValuePair<string, string>(
        equalsSplit[0],
        equalsSplit[1]);
});

var notDcs = from kvp in keyValues
             where kvp.Key != "DC"
             select kvp.Value;

Console.WriteLine(String.Join(", ", notDcs)); // me, test, test

如果要在DC=存在时返回true,但不捕获该值,可以使用以下代码:

(?:(?:OU|CN)=(\w+[^,;])|(?:DC)=(?:\w+[^,;]))(?:,|$)

对不起,那是个打字错误。我不是故意要把它包括进去的!但在使用Array.Split时,它返回DC=donot,DC=includeme作为数组中的一项我这里有一个例子-你应该在问题中包含你的代码。你的预期输出是什么?我将它存储在数组I C中,然后使用Array.split,它似乎还包含任何不在非字幕组中的内容,所以如果我删除DC=它仍然会返回所有内容不是作为一个项目在一个组中捕获的,您必须在这里包含C代码。其中一个答案解决了正则表达式的问题,如果代码有问题,如果您不发布,我们如何帮助您?
(?:(?:OU|CN)=(\w+[^,;])|(?:DC)=(?:\w+[^,;]))(?:,|$)