Вопросы про регекспы (сед и жскрипт)
2. Почему-то в ЖСкрипт применение метода реплейс к строке находит первое вхождение паттерна (или как там это в регекспах называется делает замену и выходит. Повторный вызов реплейса находит следующее вхождение, заменяет и опять выходит. Это правильно?Да, если хочешь сразу все вхождения заменить, используй метод replaceAll.
ясно, спасибо
var text = "Windows, Windows, Windows!"
text = text.replace(/Windows/g, "Linux");
а по первому вопросу? сед работает в каждой строке отдельно, по всему тексту или в зависимости от параметров?
сед работает с потоком а не со строкой
sed работает для каждой строки отдельно, поэтому он может работать с очень большими файлами. Но в нем есть escape-последовательность \n, соответствующая символу новой строки.
спасибо блин, мог бы и сам про \n догадаться
\n - не Esc-последовательность
Ключевые слова: hold space, pattern space.
> находит первое вхождение <...>, делает замену и выходит.
Так и положено. Читать про флаги в команде замены.
---
...Я работаю антинаучным аферистом...
а в седе нельзя переопределить разделитель входных записей? на эту тему man sed ченноить говорит? (потому как хз, мож и не говорит ваще) в перле это переменная $/
DESCRIPTION
Sed is a stream editor. A stream editor is used to perform basic text
transformations on an input stream (a file or input from a pipeline).
Normally, sed cyclically copies a line of input, not including its termi-
nating newline character, into a pattern space
На тему, что такое "text", можно читать SUS, IEEE POSIX или что там ещё.
man awk:
Built-in Variables
.................................................
ORS output record separator (default newline)
RS input record separator (default newline)
---
"Vyroba umelych lidi, slecno, je tovarni tajemstvi."
Оставить комментарий
maggi14
1. В доках мне этого найти не удалось, но по поведению седа, он работает только в пределах каждой отдельной строки. А может, нет. Но что-то в этом роде. Я прав? Если нет, то в чем может заключаться проблема? (надеюсь, знающим людям она понятна, и подробно объяснять ее не придется)2. Почему-то в ЖСкрипт применение метода реплейс к строке находит первое вхождение паттерна (или как там это в регекспах называется делает замену и выходит. Повторный вызов реплейса находит следующее вхождение, заменяет и опять выходит. Это правильно?