Spec-Zone.ru › Nushell

str replace для строк

Найти и заменить текст во входной строке.

Сигнатура

> str replace {flags} (find) (replace) ...rest

Флаги

  • --all, -a: Заменить все вхождения шаблона.
  • --no-expand, -n: Не подставлять группы захвата (например, $name) в строку замены.
  • --regex, -r: Сопоставлять шаблон со входными данными как регулярное выражение, а не как подстроку.
  • --multiline, -m: Режим многострочных регулярных выражений (подразумевает --regex): ^ и $ соответствуют началу/концу строки; эквивалентно (?m).

Параметры

  • find: Шаблон для поиска.
  • replace: Строка замены или замыкание, которое её генерирует.
  • ...rest: Для входной структуры данных обрабатывать строки по указанным путям к ячейкам.

Типы входных и выходных данных:

вход выход
string string
table table
record record
list<string> list<string>

Примеры

Найти и заменить первое вхождение подстроки.

> 'c:\some\cool\path' | str replace 'c:\some\cool' '~'
~\path

Найти и заменить все вхождения подстроки.

> 'abc abc abc' | str replace --all 'b' 'z'
azc azc azc

Найти и заменить содержимое с помощью группы захвата и регулярного выражения.

> 'my_library.rb' | str replace -r '(.+).rb' '$1.nu'
my_library.nu

Найти и заменить содержимое с помощью группы захвата и регулярного выражения с экранированием.

> 'hello=world' | str replace -r '\$?(?<varname>.*)=(?<value>.*)' '$$$varname = $value'
$hello = world

Найти и заменить все вхождения найденной строки с помощью регулярного выражения.

> 'abc abc abc' | str replace --all --regex 'b' 'z'
azc azc azc

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

> [[ColA ColB ColC]; [abc abc ads]] | str replace --all --regex 'b' 'z' ColA ColC
╭───┬──────┬──────┬──────╮
│ # │ ColA │ ColB │ ColC │
├───┼──────┼──────┼──────┤
│ 0 │ azc  │ abc  │ ads  │
╰───┴──────┴──────┴──────╯

Найти и заменить все вхождения найденной строки в записи с помощью регулярного выражения.

> { KeyA: abc, KeyB: abc, KeyC: ads } | str replace --all --regex 'b' 'z' KeyA KeyC
╭──────┬─────╮
│ KeyA │ azc │
│ KeyB │ abc │
│ KeyC │ ads │
╰──────┴─────╯

Найти и заменить содержимое, не используя параметр замены как регулярное выражение.

> 'dogs_$1_cats' | str replace -r '\$1' '$2' -n
dogs_$2_cats

Использовать группы захвата для обработки входного текста с помощью регулярного выражения.

> "abc-def" | str replace -r "(.+)-(.+)" "${2}_${1}"
def_abc

Найти и заменить с помощью регулярного выражения fancy-regex.

> 'a successful b' | str replace -r '\b([sS])uc(?:cs|s?)e(ed(?:ed|ing|s?)|ss(?:es|ful(?:ly)?|i(?:ons?|ve(?:ly)?)|ors?)?)\b' '${1}ucce$2'
a successful b

Найти и заменить с помощью регулярного выражения fancy-regex.

> 'GHIKK-9+*' | str replace -r '[*[:xdigit:]+]' 'z'
GHIKK-z+*

Найти и заменить текст в отдельных строках с помощью многострочного регулярного выражения.

> "non-matching line\n123. one line\n124. another line\n" | str replace --all --multiline '^[0-9]+\. ' ''
non-matching line
one line
another line

Найти и заменить последовательности экранирования обратной косой черты с помощью замыкания.

> 'string: \"abc\" backslash: \\ newline:\nend' | str replace -a -r '\\(.)' {|char| if $char == "n" { "\n" } else { $char } }
string: "abc" backslash: \ newline:
end

Примечания

Шаблон для поиска может быть подстрокой (по умолчанию) или регулярным выражением (с --regex).

Замена может быть строкой, возможно содержащей ссылки на пронумерованные ($1 и т. д.) или именованные группы захвата ($name), либо замыканием, которое вызывается для каждого совпадения. Во втором случае замыкание получает всё совпадение в качестве входных данных, а группы захвата — в качестве аргумента. Оно должно возвращать строку, которая будет использоваться для замены совпадения.

Copyright © 2019–2026 The Nushell Project DevelopersLicensed under the MIT License.
https://www.nushell.sh/commands/docs/str_replace.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API