C# 第二个非捕获组?
我这里有一个例子: 基本上,我有一个非捕获正则表达式组。但是,我想扩展它,这样它就不包括DC=之后的任何内容 我的非捕获组中有DC=,但它仍然包含DC=和之间的文本 这是我的正则表达式,我是新手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=)
(?: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+[^,;]))(?:,|$)