У меня есть оператор замены, подобный этому:
$var1 = "http"
$var2 = "1.2.3.4"
$json = $json -replace '(url = ["''])(.*)(:\/\/)(.*)(["''])', "`$1$var1`$3$var2`$5"
Предполагалось оставить нижнюю строку как есть:
url = "http://1.2.3.4"
во время его изменения на
url = "http$31.2.3.4"
Насколько я понимаю, `$3
следует заменить на ://
точно так же, как `$5
был заменен на "
.
Есть ли какое-то правило, которое я постоянно скучаю?
Edit:
Я проверил на нескольких компьютерах и вот что я узнал:
- Этот же код отлично работает на других компьютерах (проверено на Windows Server 2016 и Windows 10),
- Тот же код отлично работает на виртуальной машине Azure, подключенной через удаленный рабочий стол (Windows Server 2016),
- На моем компьютере (Windows Server 2019) происходит сбой, как описано,
- На той же виртуальной машине, что и в пункте 2. При использовании удаленного рабочего стола с моего компьютера она также не работает.
Теперь я действительно понятия не имею, что происходит. Может быть, что-то с языком?
Настройки:
- Расположение: США
- Язык: английский (США)
- Раскладка клавиатуры: PLP
Конкретные настройки:
- Числовые форматы: -123 456 789,00
- Первый день недели: понедельник
- Формат времени: ЧЧ: мм: сс
- Формат даты: гггг-мм-дд
Я знаю, что это, кажется, не связано, но я понятия не имею.
Edit2:
Похоже, что RegEx не работает должным образом, когда первый символ после (даже экранированного) группы RegEx является числом (даже в качестве переменной). Но все еще не знаю, как это опустить.