Regex, чтобы соответствовать шаблону, но исключить ряд слов

Методы класса действуют на экземпляр класса, называемый объектом.

class Example
{
   public int data = 0; // Each instance of Example holds its internal data. This is a "field", or "member variable".

   public void UpdateData() // .. and manipulates it (This is a method by the way)
   {
      data = data + 1;
   }

   public void PrintData() // This is also a method
   {
      Console.WriteLine(data);
   }
}

class Program
{
   public static void Main()
   {
       Example exampleObject1 = new Example();
       Example exampleObject2 = new Example();

       exampleObject1.UpdateData();
       exampleObject1.UpdateData();

       exampleObject2.UpdateData();

       exampleObject1.PrintData(); // Prints "2"
       exampleObject2.PrintData(); // Prints "1"
   }
}
14
задан Community 23 May 2017 в 11:53
поделиться

2 ответа

Если реализация регулярного выражения поддерживает утверждения предварительного просмотра или просмотра назад , вы можете использовать следующее:

  • Использование отрицательного утверждения упреждающего просмотра:

      \ b (?! (?: cat | dog | овца) \ () \ w + \ (
    
  • Использование утверждения отрицательного просмотра назад:

      \ b \ w + \ ((? 

Я добавил привязку \ b , которая отмечает границу слова . Таким образом, catdog ( будет сопоставлен, хотя он содержит dog (.

). Но хотя утверждения с прогнозированием более широко поддерживаются реализациями регулярных выражений, регулярное выражение с утверждением просмотра назад является более эффективен, поскольку он проверяется только в том случае, если предыдущее регулярное выражение (в нашем случае \ b \ w + \ () уже соответствовало. Тем не менее, предварительное утверждение будет проверено до фактического регулярного выражения будет соответствовать. Таким образом, в нашем случае утверждение прогнозирования проверяется всякий раз, когда совпадает \ b .

22
ответ дан 1 December 2019 в 12:01
поделиться

Вы действительно нуждаетесь в этом в одном регулярном выражении? Если нет, то простейшая реализация - это всего лишь два регулярных выражения: одно для проверки того, что вы не соответствуете ни одному из ваших запрещенных слов, а другое - для соответствия вашему \ w +, объединенное логическим И.

3
ответ дан 1 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: