Вопросы про регекспы (сед и жскрипт)

maggi14

1. В доках мне этого найти не удалось, но по поведению седа, он работает только в пределах каждой отдельной строки. А может, нет. Но что-то в этом роде. Я прав? Если нет, то в чем может заключаться проблема? (надеюсь, знающим людям она понятна, и подробно объяснять ее не придется)
2. Почему-то в ЖСкрипт применение метода реплейс к строке находит первое вхождение паттерна (или как там это в регекспах называется делает замену и выходит. Повторный вызов реплейса находит следующее вхождение, заменяет и опять выходит. Это правильно?

nikita270601

2. Почему-то в ЖСкрипт применение метода реплейс к строке находит первое вхождение паттерна (или как там это в регекспах называется делает замену и выходит. Повторный вызов реплейса находит следующее вхождение, заменяет и опять выходит. Это правильно?
Да, если хочешь сразу все вхождения заменить, используй метод replaceAll.

maggi14

ясно, спасибо

qsk78

Либо используй модификатор g в регулярном выражении, как это делается и в других языках:
var text = "Windows, Windows, Windows!"
text = text.replace(/Windows/g, "Linux");

maggi14

сенкс
а по первому вопросу? сед работает в каждой строке отдельно, по всему тексту или в зависимости от параметров?

otets-mihail

сед работает с потоком а не со строкой

qsk78

sed работает для каждой строки отдельно, поэтому он может работать с очень большими файлами. Но в нем есть escape-последовательность \n, соответствующая символу новой строки.

maggi14

спасибо блин, мог бы и сам про \n догадаться

otets-mihail

\n - не Esc-последовательность

Ivan8209

> А может, нет.
Ключевые слова: hold space, pattern space.
> находит первое вхождение <...>, делает замену и выходит.
Так и положено. Читать про флаги в команде замены.
---
...Я работаю антинаучным аферистом...

Barbie29

а в седе нельзя переопределить разделитель входных записей? на эту тему man sed ченноить говорит? (потому как хз, мож и не говорит ваще) в перле это переменная $/

Ivan8209

Там всё написано:

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."
Оставить комментарий
Имя или ник:
Комментарий: