Я хотел исправить автоматически созданные сценарии Linux. Я использую функцию findAll(String, String)
для изменения "$APP_ARGS"
для чего-то другого.Как найти подстроку строки с двойными кавычками со знаком доллара в Groovy
я попытался варианты:
replaceAll('"$APP_ARGS"', 'simulators ' + '"\\\\$APP_ARGS"') - doesn't find
replaceAll('\"\$APP_ARGS\"',... - doesn't find
replaceAll('"\$APP_ARGS"',... - doesn't find
replaceAll('\\"\\$APP_ARGS\\"',... - editor warning - excessive escape
replaceAll('"\\\\$APP_ARGS"',... - doesn't find
replaceAll('\\\\"\\\\$APP_ARGS\\\\"',... - doesn't find
replaceAll($/"$$APP_ARGS"/$, ...) - does not find
replaceAll('"[$]APP_ARGS"', 'something simple') - finds.
replaceAll('"[$]APP_ARGS"', '"\\\\$APP_ARGS"') - fails.
Как вы видите, если я использую формат регулярных выражений, вывод работает нормально. Но есть ли способ ускорить работу? Для этого мне нужна $
в заменяющей строке.
Согласно руководствам Groovy, строка /../ не требует экранирования ни для чего, кроме самих слэшей. Но
replaceAll(/"$APP_ARGS"/,...
не удалось также с сообщением: Не удалось получить неизвестное свойство «APP_ARGS».
Похоже, что поведение этой функции не имеет логики, и мы должны найти правильное решение экспериментами.
Вы сражаетесь с GStrings и RegExp сразу. Если вы используете только «replace», вы можете использовать строки с одним кавычком и не иметь дело с цитированием в regexp. например '' ls $ ARGS'.replace ('$ ARGS', "-l") ' – cfrick
Я верил вам, если не та же проблема со вторым параметром, то есть чистой String. И первый параметр, BTW, также является строковым типом, а не шаблоном. Это то, о чем я говорю: первый параметр объявлен как String, но работает как шаблон - частично. Нет логики. – Gangnus
Это не имеет ничего общего со вторым аргументом, если вы не пытаетесь что-то сделать, что неясно в моем вопросе. попробуйте '' ls "$ ARGS" '. replace (' "$ ARGS" ',' -l "$ ARGS" ') ', и если это не то, что вы ожидаете, пожалуйста, уточните. 'replaceAll' хочет, чтобы regexp был первым параметром (и превратит вашу строку в одну). – cfrick