none
Replace в PowerShell RRS feed

  • Вопрос

  • Есть строка вида:

    <текст из любых символов и пробелов><пробел><число от 1 до 4 знаков><пробел><буква "x"><пробел><число от 1 до 4 знаков><<текст из любых символов и пробелов>

    Пример: Some size: 1345 x 321 pcs (D5) some text and 567digits.

    Необходимо: выдрать из строки числа 1345 и 321

    Пытался использовать оператор -replace ($_ -replace "\d\sx\s\d"), но получается выдрать как раз всё содержимое без этих двух чисел.

    Есть ли какой-то способ обратить выборку replace? Чтобы он наоборот оставлял выражение в кавычках, а остальное убирал?

    П.С. с отрицательным якорем ^ тоже у меня не прокатило: ($_ -replace "^[\d\sx\s\d]") - оставляет полностью всю фразу без изменений.

    29 апреля 2013 г. 17:34

Ответы

  • PS >  "Some size: 1345 x 321 pcs (D5) some text and 567digits." -match ": (\d{1,4}) x (\d{1,4}) pcs"
    True
    PS >  $matches
    
    Name                           Value
    ----                           -----
    2                              321
    1                              1345
    0                              : 1345 x 321 pcs
    
    
    PS >  $matches[1]
    1345
    PS >  $matches[2]
    321
    
    
    PS >  "Some size: 1345 x 321 pcs (D5) some text and 567digits." -replace ".+: (\d{1,4}) x (\d{1,4}) pcs.+",'$1 $2'
    1345 321

    • Предложено в качестве ответа ImMax 2 мая 2013 г. 12:34
    • Помечено в качестве ответа Vinokurov YuriyModerator 5 мая 2013 г. 0:02
    29 апреля 2013 г. 18:06
    Отвечающий