regex в sed

Вы можете использовать сигнатуру конструктора:

class DownloadWorker {
    constructor(downloader: new () => IDownloader) {
    }
}

Сигнатура похожа на сигнатуру функции, но new делает ее вызываемой с помощью оператора new для создания нового объекта.

Приведенный выше код принимает конструктор (то есть класс) без параметров. Вы можете добавить определенные параметры или определить его как new (...a:any[]) => IDownloader, чтобы позволить конструктору с любыми аргументами.

10
задан Dónal 24 October 2008 в 18:38
поделиться

5 ответов

Вот выстрел в лучшую замену regex:

's/##\([a-zA-Z_]\+\)##/${\1}/g'

Или если Вы принимаете точно три символа:

's/##\([a-zA-Z_]\{3\}\)##/${\1}/g'
12
ответ дан 3 December 2019 в 21:24
поделиться
  • Инкапсулируйте альфу и '_' в '\(' и '\)' и затем в ссылке правой стороны это с '\1'.
  • '+' для соответствия одному или нескольким альфа и '_' (в случае, если Вы видите ####).
  • Добавьте 'g' опцию в конец для замены всех соответствий (который я предполагаю, то, что Вы хотите сделать в этом случае).
's/##\([a-zA-Z_]\+\)##/${\1}/g'
2
ответ дан 3 December 2019 в 21:24
поделиться

Используйте это:

s/##\([^#]*\)##/${\1}/

BTW, нет никакой потребности выйти из $ в правой стороне "s" оператора.

1
ответ дан 3 December 2019 в 21:24
поделиться
sed 's/##\([a-zA-Z_][a-zA-Z_][a-zA-Z_]\)##/${\1}/'

\(...\) помнит... и ссылается как \1 в расширении. Используйте одинарные кавычки для сохранения исправности.

Как отмечено в комментариях ниже этого, это может также быть законтрактовано к:

sed 's/##\([a-zA-Z_]\{3\}\)##/${\1}/'

Этот ответ предполагает что пример, требуемый точно три подобранные символа. Существует несколько изменений в зависимости от того, что является промежуточным знаки "диез". Ключевая роль помнит часть совпавшей строки.

1
ответ дан 3 December 2019 в 21:24
поделиться

повторите '##XXX##' | sed "s/^## ([^#] *)/## $ {\\1}/g"

0
ответ дан 3 December 2019 в 21:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: