Я достаточно разбираюсь в написании Batch-скриптов для Windows, но даже после всех этих лет, как правильно убегать от персонажей, меня озадачивает. Это особенно сложно при попытке выяснить правильный способ избежать регулярного выражения для использования с sed. Есть ли какой-нибудь инструмент, который может мне помочь? Возможно, что-то, что позволяет мне вставить "нормальную" строку и выплескивать правильно экранированную версию этой строки?
Обновление: Я не хочу приводить пример, потому что я не ищу ответа о том, как избежать определенной строки. Я также не ищу решение, которое будет работать для одного конкретного приложения. Я ищу инструмент, который поможет мне получить синтаксис escape для каждой строки, которую мне когда-либо понадобится, чтобы избежать того, что инструмент мог бы ее использовать из командной строки.
При этом регулярное выражение, которое я действительно хочу,
(^.*)(Form Product=")([^"]*") FormType="[^"]*" FormID="([0-9][0-9]*)".*$
Возьмите это истинное регулярное выражение (т.е. не привязанное к BATCH) и оберните его в некоторый синтаксис sed, например ssed "[email protected] --- Insert escaped regex here --- @http://psph/\1/\[email protected]" "%~1"
, и, наконец, откройте его... Опять же, есть ли какой-либо инструмент, который может помочь избежать любой строки для использовать в командной строке BATCH?
p.s. Существует так много исключений из синтаксиса BATCH, что я даже соглашусь на хороший чит-лист.