Введите номер в Powershell заменить - PullRequest
2 голосов
/ 16 февраля 2012

Используя powershell, я хочу заменить определенную числовую часть строки другим числом.

Лучше всего описать эту проблему на примере.

$s = '   First part: 65 Second Part'

###################################################################
# this generates "       First part: sixty-six Second Part"       #
###################################################################
$s -replace '^(\s*First part:\s+)[0-9]+(.*)$', '$1sixty-six$2'

###################################################################
# But I want to generate"    First part: 66 Second Part"          #
###################################################################
$s -replace '^(\s*First part:\s+)[0-9]+(.*)$', '$166$2'

Не работает.

Как указать «1 доллар, за которым следует число 66», а не «166»?

Ответы [ 2 ]

5 голосов
/ 16 февраля 2012

Используйте этот синтаксис: ${1}66$2

Выход:

'   First part: 66 Second Part'
2 голосов
/ 16 февраля 2012

Вы можете сделать это:

$s -replace '^(\s*First part:\s+)[0-9]+(.*)$', '${1}66$2'

или

$s -replace '^(?<first>\s*First part:\s+)[0-9]+(.*)$', '${first}66$1'

Оба схожи, за исключением того, что второй использует именованную группу.

Я не уверен в том, что вы пытаетесь сделать (пример выглядит сглаженным), но должен быть более простой способ сделать то, что вы хотите, а также вы можете использовать

$`

и

$'

для обозначения частей до и после матча соответственно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...