В Windows вы можете использовать инструментарий управления Windows (WMI), чтобы гарантировать, что приложения с указанной командной строкой не запущены, например:
wmic process where (name="nmake.exe") get commandline | findstr /i /c:"/f load.mak" /c:"/f build.mak" > NUL && (echo THE BUILD HAS BEEN STARTED ALREADY! > %ALREADY_STARTED% & exit /b 1)
Регулярное выражение необходимо сделать не жадным, поскольку по умолчанию "(. *)"
будет соответствовать всем "путь к файлу / уровень1 / уровень2" xxx some = "xxx"
.
Вместо этого вы можете сделать свою точку-звездочку не жадной, что позволит ей соответствовать как можно меньшему количеству символов:
/location="(.*?)"/
Добавление ?
в квантификатор (?
, *
или +
) делает его нежадным.
location="(.*)"
будет соответствовать от " после location=
до " после some="xxx
, если вы не сделаете его не жадным. Поэтому вам либо нужно .*?
(т.е. сделать его не жадным), либо лучше заменить .*
на [^"]*
.
Используйте не жадное сопоставление, если ваш движок поддерживает его. Добавьте символ ? внутри захвата.
/location="(.*?)"/