Что делает это Regex: new Regex (@ "(? <! \\),"); - PullRequest
1 голос
/ 23 июня 2010
Regex rx = new Regex(@"(?<!\\\\),");
String test = "OU=James\\, Brown,OU=Test,DC=Internal,DC=Net";

Это прекрасно работает, но я хочу это понять. Я бездельничал без успеха. Может ли кто-нибудь дать мне слово или фразу, которую я могу использовать, чтобы найти и понять это?

Я бы подумал, что это должно быть написано так:

 new Regex(@"(\\\\)?,");

Я видел синтаксис (?zzzzzz) раньше. Это <! часть, которой я озадачен.

Ответы [ 2 ]

8 голосов
/ 23 июня 2010

(?<!…) является отрицательным косвенным утверждением . В вашем регулярном выражении

(?<!\\\\),

,, очевидно, соответствует запятой. \\\\ соответствует 2 обратным слешам. Тогда (?<!\\\\), соответствует любым запятым , за которыми не следует 2 обратной косой черты.

Следовательно, он будет соответствовать , перед OU и DC, но не между Джеймсом и Брауном:

OU=James\\, Brown,OU=Test,DC=Internal,DC=Net
                 ^       ^           ^
4 голосов
/ 23 июня 2010

Часть <! обозначает негативный вид сзади .Остальная часть выражения (просто запятая) совпадает, только если ей не предшествует обратная косая черта (или две обратные косые черты, в зависимости от того, является ли заголовок или текст вашего вопроса точным).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...