Сопоставление регулярных выражений разрешает только определенные слова и запрещает что-либо до

У меня есть этот инъекционный VB-скрипт, который я использую для изменения исходного кода C#. Это мое текущее правило сопоставления регулярных выражений, которое я использую в настоящее время для поиска строк кода с классами в файлах:

(public|protected|internal|private|static|abstract)\b\W+(class)\b

Он работает и обнаруживает строки класса, но проблема в том, что он обнаруживает все случаи в приведенных ниже примерах, в то время как только первый должен быть допустимым.

public class  <-- is valid match
//this is a public class comment    <-- Should not be valid as match
"This is just a string talking about a public class"    <-- Should not be valid match

Для меня недостает того, чтобы это правило соответствия работало, разрешать только то, что соответствует разрешенным словам, и делать любое другое дополнительное совпадение недействительным. Ну, пробел должен быть единственным типом, который должен быть разрешен.

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

Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Создайте ползком, похожим на звездные войны, с помощью CSS и Javascript
Если вы веб-разработчик (или хотите им стать), то вы наверняка гик и вам нравятся "Звездные войны". А как бы вы хотели, чтобы фоном для вашего...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Начала с розового дизайна
Начала с розового дизайна
Pink Design - это система дизайна Appwrite с открытым исходным кодом для создания последовательных и многократно используемых пользовательских...
Шлюз в PHP
Шлюз в PHP
API-шлюз (AG) - это сервер, который действует как единая точка входа для набора микросервисов.
14 Задание: Типы данных и структуры данных Python для DevOps
14 Задание: Типы данных и структуры данных Python для DevOps
проверить тип данных используемой переменной, мы можем просто написать: your_variable=100
1
0
57
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать ^\s*, чтобы указать, что это должно быть в начале строки, за которым следует 0 или более пробелов:

^\s*(public|protected|internal|private|static|abstract)\b\W+(class)\b

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

Если { после имени класса можно использовать для различения ваших 3 случаев, вы можете изменить свое регулярное выражение следующим образом:

(public|protected|internal|private|static|abstract)\b\W+(class)\b\s*[\r\n]{0,2}\s*{

Другие вопросы по теме