2009-11-13 5 views
0

Из-за ограничений, мне нужно написать одно регулярное выражение, и я хотел бы черный список вместо белого списка определенных строк (или сайты)не соответствует регулярному выражению

Здесь я хочу, чтобы запретить и IP юность адрес. Ниже приведен код, соответствующий двум сайтам. Как я могу НЕ сопоставить их и позволить двум Google (или другим сайтам) соответствовать?

Вот код C#, который я использовал для проверки моего регулярного выражения.

 var mq = Regex.Match("http://google.com\nhttp://youtube.com\nhttp://google.com/ddhf\n72.72.72.72\n", 
      @"(.*youtube\.com.*|\d+\.\d+\.\d+\.\d+)", RegexOptions.Multiline); 
     while (mq.Success) 
     { 
      string sz = mq.Groups[0].Value; 
      Console.WriteLine(sz); 
      mq = mq.NextMatch(); 
     } 

     return; 

ответ

2

Необходимо the ?! construct. Так было бы:

(?!.*youtube\.com.*|\d+\.\d+\.\d+\.\d+) 
+0

Я посмотрел на него, я не мог сделать?! работа над моим тестом выше – 2009-11-13 09:42:08

+0

(?!) - это просто «смотреть в будущее», то есть он ничего не ловит. Вы должны повторить шаблон, например: '(?! Youtube) ([a-z] +)', тогда во второй круглой скобке будет записано любое слово, которое не является «youtube». – Boldewyn

+0

вывод много пустых строк. – 2009-11-13 09:54:37