在我正在处理的此正则表达式中,我希望对XOR的第二个条件有所帮助。
此正则表达式旨在获取cn=
之后的字符串,直到括号后面有一个空格或两个闭合括号为止。
在第一种情况下,它将是空白,我不想在比赛数据上显示文字,但是我无法摆脱它,例如:
(&(cn=Another (test)))
(&(cn=Another (test)) (objectClass=group))
在上面的示例中,我只想获得另一个(测试)
我尝试了否定的前瞻性,但是无法正常工作。
到目前为止,我得到的是:
https://rubular.com/r/DVV830IGSGiNSf
编辑:
我需要获得的是与cn=
文本相同括号内的字符串,除了cn=
本身。我需要突出显示的内容:
(&(cn = 测试))
(&(cn = 测试)(objectClass = group))
(&(CN = Te(st)ing ))
(&(CN = Te(st)ing )(objectClass = group))
(&(cn = 另一个(测试)))
(&(cn = 另一个(测试))(objectClass = group))
(&(cn = 访问RW \ Srv-corp \ ScriptsDesenv ))
(&(cn = 访问RW \ Srv-corp \ ScriptsDesenv )(objectClass = group))
(&(cn = 访问权限()))
(&(cn = Acess())(objectClass = group))
答案 0 :(得分:0)
我建议在cn
的匹配括号处分割字符串,然后使用(cn|CN)=([0-9a-zA-Z \\()-])+
答案 1 :(得分:0)
幸运的是,Ruby 2. *支持您的需求所依赖的递归。使用以下正则表达式:
(?i)cn=\K(\(\g<1>\)|[^()]*)+
正则表达式细目:
(?i)
启用不区分大小写的匹配cn=
匹配cn=
\K
重置输出(
开始捕获#1组
\(\g<1>\)
可以看到圆括号的递归匹配|
或[^()]*
匹配(
和)
)+
CP#1结束,请尽可能重复