Описание тега openldap
Проблема, как steeldriver государств,
разве что [0-9]{0,2}
является нежадным;
проблема в том, что .*?
перед его жадным.
СЭД
поддерживает Bre и прежде, ни один из которых не поддерживает нежадное соответствие.
Это особенность PCREs.
Например, следующие команды:
$ Эхо 'aQbQc' | е с/.*\?М/Х/'
$ Эхо 'aQbQc' | е с/.*М/Х/'
$ Эхо 'aQbQc' | СЭД -р 'с/.*?М/Х/'
$ Эхо 'aQbQc' | СЭД -р 'с/.*М/Х/'
все выходные
ХС
(Я не уверен, почему он просто игнорирует ?
.)
Смотрите нежадный матч с СЭД регулярным выражением (эмуляция языка Perl .*?
).
Ваше описание функции, которую требуется выполнить-это скудный, но я считаю, что я обратной инженерии он. Вы можете получить желаемый эффект от не соответствия характеров перед номером вы хотите, чтобы соответствовать, пока ты не нашел номер:
$ Эхо '123980925sriten34=ienat' | СЭД -е 'с/\([1-9][0-9]\{0,2\}\+\)\([%=+-]\).*/! \1 \2 /' -е 'с/.*!//'
34 =
замена !
с любой строкой, как известно, не появляются во входных данных.
Если у вас нет такой строки, но вы используете GNU sed, вы можете использовать строку:
$ Эхо '123980925sriten34=ienat' | СЭД -е 'с/\([1-9][0-9]\{0,2\}\+\)\([%=+-]\).*/\Н \1 \2 /' -е 'с/.*\Н//'
34 =
что, конечно, не может появляться на любой линии.