kaiafa
|
|
|
|
|
Рег.: 17.05.2004
|
Сообщений: 13390
|
Из: Strasbourg, FR
|
Рейтинг: 4
|
|
Вопросы про регекспы (сед и жскрипт)
16.11.2006 13:08
|
|
|
1. В доках мне этого найти не удалось, но по поведению седа, он работает только в пределах каждой отдельной строки. А может, нет. Но что-то в этом роде. Я прав? Если нет, то в чем может заключаться проблема? (надеюсь, знающим людям она понятна, и подробно объяснять ее не придется)
2. Почему-то в ЖСкрипт применение метода реплейс к строке находит первое вхождение паттерна (или как там это в регекспах называется), делает замену и выходит. Повторный вызов реплейса находит следующее вхождение, заменяет и опять выходит. Это правильно?
|
|
|
chunky_bacon
|
chunky_bacon
|
|
|
|
Рег.: 08.10.2006
|
Сообщений: 1996
|
|
Рейтинг: 820
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: kaiafa]
16.11.2006 13:09
|
|
|
Quote:
2. Почему-то в ЖСкрипт применение метода реплейс к строке находит первое вхождение паттерна (или как там это в регекспах называется), делает замену и выходит. Повторный вызов реплейса находит следующее вхождение, заменяет и опять выходит. Это правильно?
Да, если хочешь сразу все вхождения заменить, используй метод replaceAll.
|
|
kaiafa
|
|
|
|
|
Рег.: 17.05.2004
|
Сообщений: 13390
|
Из: Strasbourg, FR
|
Рейтинг: 4
|
|
|
|
xryun_del
|
hikikomori
|
|
|
|
Рег.: 08.08.2005
|
Сообщений: 890
|
|
Рейтинг: 0
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: kaiafa]
16.11.2006 15:23
|
|
|
Либо используй модификатор g в регулярном выражении, как это делается и в других языках: var text = "Windows, Windows, Windows!" text = text.replace(/Windows/g, "Linux");
|
|
kaiafa
|
|
|
|
|
Рег.: 17.05.2004
|
Сообщений: 13390
|
Из: Strasbourg, FR
|
Рейтинг: 4
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: xryun_del]
16.11.2006 15:29
|
|
|
сенкс 
а по первому вопросу? сед работает в каждой строке отдельно, по всему тексту или в зависимости от параметров?
|
|
|
shaller
|
San Jose
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 21640
|
Из: Станция 074803
|
Рейтинг: 15646
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: kaiafa]
16.11.2006 16:06
|
|
|
сед работает с потоком а не со строкой
|
'Земля наша велика и обильна, а порядка в ней нет. Приходите княжить и владеть нами' |
|
xryun_del
|
hikikomori
|
|
|
|
Рег.: 08.08.2005
|
Сообщений: 890
|
|
Рейтинг: 0
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: kaiafa]
16.11.2006 16:10
|
|
|
sed работает для каждой строки отдельно, поэтому он может работать с очень большими файлами. Но в нем есть escape-последовательность \n, соответствующая символу новой строки.
|
|
kaiafa
|
|
|
|
|
Рег.: 17.05.2004
|
Сообщений: 13390
|
Из: Strasbourg, FR
|
Рейтинг: 4
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: xryun_del]
16.11.2006 16:16
|
|
|
спасибо )) блин, мог бы и сам про \n догадаться
|
|
|
shaller
|
San Jose
|
|
|
|
Рег.: 25.10.2002
|
Сообщений: 21640
|
Из: Станция 074803
|
Рейтинг: 15646
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: xryun_del]
16.11.2006 16:19
|
|
|
\n - не Esc-последовательность
|
'Земля наша велика и обильна, а порядка в ней нет. Приходите княжить и владеть нами' |
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: kaiafa]
16.11.2006 17:21
|
|
|
> А может, нет.
Ключевые слова: hold space, pattern space.
> находит первое вхождение <...>, делает замену и выходит.
Так и положено. Читать про флаги в команде замены.
--- ...Я работаю антинаучным аферистом...
|
|
Vilfred_Sagen
|
спать хочу
|
|
|
|
Рег.: 29.10.2004
|
Сообщений: 22313
|
Из: moscow
|
Рейтинг: 7124
|
|
Re: Вопросы про регекспы (сед и жскрипт)
[re: KOHTPA]
17.11.2006 10:58
|
|
|
а в седе нельзя переопределить разделитель входных записей? на эту тему man sed ченноить говорит? (потому как хз, мож и не говорит ваще) в перле это переменная $/
|
|
KOHTPA
|
Carpal Tunnel
|
|
|
|
Рег.: 22.01.2003
|
Сообщений: 33647
|
|
Рейтинг: 2374
|
|
|
Там все написано:
code:
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).
code:
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:
code:
Built-in Variables
.................................................
ORS output record separator (default newline)
RS input record separator (default newline)
--- "Vyroba umelych lidi, slecno, je tovarni tajemstvi."
|
|