У меня есть этот инъекционный 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
Для меня недостает того, чтобы это правило соответствия работало, разрешать только то, что соответствует разрешенным словам, и делать любое другое дополнительное совпадение недействительным. Ну, пробел должен быть единственным типом, который должен быть разрешен.
Как обновить текущее регулярное выражение, чтобы оно соответствовало только первой строке из трех примеров, которые я только что привел?
Вы можете использовать ^\s*
, чтобы указать, что это должно быть в начале строки, за которым следует 0 или более пробелов:
^\s*(public|protected|internal|private|static|abstract)\b\W+(class)\b
Если { после имени класса можно использовать для различения ваших 3 случаев, вы можете изменить свое регулярное выражение следующим образом:
(public|protected|internal|private|static|abstract)\b\W+(class)\b\s*[\r\n]{0,2}\s*{