Как сопоставить два слова, которые разделены любым переменным количеством символов и пробелов, используя регулярное выражение?

#regex

#регулярное выражение

Вопрос:

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

Цель: класс, конструктор

Должно совпадать:

 class myComponent {
  constructor() {
  }
}
  

Не должно совпадать:

 class myComponent {
  render() {
  }
}
  

Также должно совпадать:

 class myComponent {
  // imagine a bunch of code here that comes before the constructor
  // with many different lines and many random characters
  constructor() {
  }
}
  

Ответ №1:

Да, вы можете использовать это регулярное выражение, которое соответствует тому, что вы хотите.

 bclassb(?:(?!bclassb)[wW])*bconstructorb
  

Объяснение этого регулярного выражения:

  • bclassb — Совпадает class буквально как целое слово и не совпадает частично в более крупном тексте
  • (?:(?!bclassb)[wW])* — Это сопоставляет любой ввод ноль или более раз жадным способом, за исключением class того, что это целое слово, также известное как жадный маркер
  • bconstructorb — Наконец, это соответствует литералу constructor как целому слову

ДЕМОНСТРАЦИЯ