регулярные выражения - поиск и замена во множестве файлов
Модераторы: /dev/random, Модераторы разделов
-
vlav
- Сообщения: 242
регулярные выражения - поиск и замена во множестве файлов
Есть много html файлов содержащих фрагмент <table> текст 123 текст </table>
при этом есть другие <table> и </table> и до и после фрагмента с фразой - 123.
Как найти и удалить фрагменты, содержащие 123, от ближайшего к нему <table> до соответствующей </table> ?
Заранее премного благодарен, ибо за сим увлекательным занятием провел пол дня за sed, потом за perl - без должного эффекта...
при этом есть другие <table> и </table> и до и после фрагмента с фразой - 123.
Как найти и удалить фрагменты, содержащие 123, от ближайшего к нему <table> до соответствующей </table> ?
Заранее премного благодарен, ибо за сим увлекательным занятием провел пол дня за sed, потом за perl - без должного эффекта...
любимая ОС- FC
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
Re: регулярные выражения - поиск и замена во множестве файлов
Грубоватая реализация, но вроде работает:
Код: Выделить всё
cat file | tr '\n' '~' | sed 's|~*\(<table[^>]*>\)|\n\1|g;s|\(</table[^>]*>\)|\1\n|g;' | sed '/<table.*123.*<\/table/d;/^$/d' | tr '~' '\n'Код: Выделить всё
$ cat file
<table>
fhsjkf
123
</table>
<table>
test
</table><table cskldc>
sdjal
123
fdjskf
fsdjk
</table>
<table>
fdjksj
fsdjk
jrk23lrj2
</table>
$ cat file | tr '\n' '~' | sed 's|~*\(<table[^>]*>\)|\n\1|g;s|\(</table[^>]*>\)|\1\n|g;' | sed '/<table.*123.*<\/table/d;/^$/d' | tr '~' '\n'
<table>
test
</table>
<table>
fdjksj
fsdjk
jrk23lrj2
</table>UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
т.е., присутствуют вложенные конструкции вида:
<table> <table> 000 </table> 123 <table> 000 </table> </table>
?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
vlav
- Сообщения: 242
Re: регулярные выражения - поиск и замена во множестве файлов
нет, вложенных конструкций нет. Просто нужно идентифицировать уникальное "123" вместе с текстом назад вплоть до ближайшего <table и вперед до ближайшего </table>. Причем оно встречается в каждом файле только 1 раз.
любимая ОС- FC
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
не дождавшись ответа, я начал писать в предположении, что требуется таки обработка вложенных конструкций·
чтоб зря не пропадало, вот что успел написать:
в этом случае можно использовать инструмент sgrep·
исходный файл:
Shell
$ cat file.in
<html>
<table>
<table>
text 123 text
</table>
</table>
<table>
<table>
</table>
123 text
</table>
</html>
$ hd file.in
00000000 3c 68 74 6d 6c 3e 0a 20 20 3c 74 61 62 6c 65 3e |<html>. <table>|
00000010 0a 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 20 20 |. <table>. |
00000020 20 20 20 74 65 78 74 20 31 32 33 20 74 65 78 74 | text 123 text|
00000030 0a 20 20 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 |. </table>. |
00000040 3c 2f 74 61 62 6c 65 3e 0a 20 20 3c 74 61 62 6c |</table>. <tabl|
00000050 65 3e 0a 20 20 20 20 3c 74 61 62 6c 65 3e 0a 20 |e>. <table>. |
00000060 20 20 20 3c 2f 74 61 62 6c 65 3e 0a 20 20 20 20 | </table>. |
00000070 31 32 33 20 74 65 78 74 0a 20 20 3c 2f 74 61 62 |123 text. </tab|
00000080 6c 65 3e 0a 3c 2f 68 74 6d 6c 3e 0a |le>.</html>.|
0000008cс помощью sgrep можно получить координаты нужных фрагментов·
в данном случае их будет два: "text 123 text" и "<table></table> 123 text"·
вот их координаты:
Shell
$ sgrep -o '%s %e\n' 'inner (("<table>"__"</table>") containing "123")' file.in
28 52
82 122"-o" задаёт формат вывода:
"%s" — начало фрагмента
"%e" — конец фрагмента
можно не конец, а длину фрагмента вывести с помощью "%l" (см. man sgrep)
ну а по этим координатам уже можно «резать» файл·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
кстати, по поводу «резания»·
ничего лучше в голову не пришло, чем использовать dd·
примерно так:
Shell
$ sgrep -o '%s\n%e ' 'inner (("<table>"__"</table>") containing "123")' file.in | \
sed '1s/^/0 /' | \
while read s e; do n=$(echo "$e-$s" | bc); echo "$s $n"; done | \
sed -r '$s/-[0-9]+$//;s/ ([0-9]+)$/ count=\1/;s/^([0-9]+) /dd if=file.in bs=1 skip=\1 /;s!$! 2>/dev/null!' | \
while read c; do eval "$c"; done
<html>
<table>
<table> </table>
</table>
<table> </table>
</html>
комментарии:
1. чуть иначе сделал формат вывода sgrep-а· чтобы он выводил в виде:
<начало>
<конец> <начало>
<конец>
2. sed '1s/^/0 /' — в начале первой строки добавляется 0 — начальная позиция файла·
3. while read s e; do n=$(echo "$e-$s" | bc); echo "$s $n"; done — пары "<конец> <начало>", стоящие в одной строке, заменяются на "<конец> <длина>"· <длина> высчитывается как разница между <начало> (начало следующего фрагмента) и <конец> (конец предыдущего)·
4. sed -r '$s/-[0-9]+$//;s/ ([0-9]+)$/ count=\1/;s/^([0-9]+) /dd if=file.in bs=1 skip=\1 /;s!$! 2>/dev/null!' — тут подпункты уже нужны:
4.1. $s/-[0-9]+$// — в последней строке ввода получается (в данном примере) "122 -122"· вот эти "-122" данная конструкция и удаляет·
4.2. s/ ([0-9]+)$/ count=\1/ — второе число, стоящее в строке, предваряется строкой count=·
4.3. s/^([0-9]+) /dd if=file.in bs=1 skip=\1 / — первое число, стоящее в строке, предваряется строкой dd if=file.in bs=1 skip=·
4.4. s!$! 2>/dev/null! — в конце строки перенаправляем stderr (куда dd выводит не нужную нам в данном случае статистику) в /dev/null·
4.5. после всех этих преобразований для данного примера получаются на выходе такие строки:
Shell
dd if=file.in bs=1 skip=0 count=28 2>/dev/null
dd if=file.in bs=1 skip=52 count=30 2>/dev/null
dd if=file.in bs=1 skip=122 2>/dev/nullостаётся их только выполнить:
5. while read c; do eval "$c"; done — вот эта конструкция их и выполняет·
вот и получаем из
Shell
<html>
<table>
<table>
text 123 text
</table>
</table>
<table>
<table>
</table>
123 text
</table>
</html>такой результат:
Shell
<html>
<table>
<table> </table>
</table>
<table> </table>
</html>Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
Спасибо сказали:
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: регулярные выражения - поиск и замена во множестве файлов
vlav писал(а): ↑29.07.2011 16:12Есть много html файлов содержащих фрагмент <table> текст 123 текст </table>
при этом есть другие <table> и </table> и до и после фрагмента с фразой - 123.
Как найти и удалить фрагменты, содержащие 123, от ближайшего к нему <table> до соответствующей </table> ?
Заранее премного благодарен, ибо за сим увлекательным занятием провел пол дня за sed, потом за perl - без должного эффекта...
$
doc@dt:~/tests$ cat z
<html>
<table>1
<table>2
text 123 text
</table>2
</table>1
<table>3
<table>4
</table>4
123 text
</table>3
</html>
doc@dt:~/tests$ ./tbl.sed z
<html>
<table>1
</table>1
<table>3
<table>4
</table>4
123 text
</table>3
</html>
doc@dt:~/tests$ cat tbl.sed
#!/bin/sed -rnf
/<table>/{
:main_loop
${
# последняя строка
p
b
}
N
/\n.*<table>/{
# встретилось второе <table>
h
s/(.*)\n.*/\1/
p
g
s/.*\n//
b main_loop
}
/123/{
# уникальная хрень
:loop2
N
${
p
b
}
\~</table>~ ! b loop2
b
}
\~</table>~{
p
b
}
b main_loop
}
p
вроде работает...
sash-kan
ИМХО ваш подход излишне сложен в данном случае.
ЗЫЖ интересно, а что молчит мой оппонент, фанат перловки? :(
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: регулярные выражения - поиск и замена во множестве файлов
дык <table> оставить? Как скажите:
Код: Выделить всё
#!/bin/sed -rnf
/<table>/{
:main_loop
${
# последняя строка
p
b
}
N
/\n.*<table>/{
# встретилось второе <table>
h
s/(.*)\n.*/\1/
p
g
s/.*\n//
b main_loop
}
/123/{
# уникальная хрень
:loop2
N
${
p
b
}
\~</table>~ ! b loop2
s~(.*<table>).*(</table>.*)~\1вырезано\2~p
b
}
\~</table>~{
p
b
}
b main_loop
}
pЗЫЖ
сколько раз встречается, столько и будет вырезано.
-
vlav
- Сообщения: 242
Re: регулярные выражения - поиск и замена во множестве файлов
Спасибо - интересно.
Но сложно.
Я в итоге для подобных случаев написал маленькую программу, которую можно отредактировать под любой частный случай, чем возиться с сед или рег выражением, потратив на это меньше времени и избавившись от приобретения уникального опыта. Причем ее написание заняло на порядок меньше времени, чем все предыдущие эксперименты и пожалел что не сделал этого раньше.
Хотя, вероятно, меня и не одобрят.
Но сложно.
Я в итоге для подобных случаев написал маленькую программу, которую можно отредактировать под любой частный случай, чем возиться с сед или рег выражением, потратив на это меньше времени и избавившись от приобретения уникального опыта. Причем ее написание заняло на порядок меньше времени, чем все предыдущие эксперименты и пожалел что не сделал этого раньше.
Хотя, вероятно, меня и не одобрят.
любимая ОС- FC
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: регулярные выражения - поиск и замена во множестве файлов
не вижу ничего сложного.
vlav писал(а): ↑18.08.2011 17:43Я в итоге для подобных случаев написал маленькую программу, которую можно отредактировать под любой частный случай, чем возиться с сед или рег выражением, потратив на это меньше времени и избавившись от приобретения уникального опыта. Причем ее написание заняло на порядок меньше времени, чем все предыдущие эксперименты и пожалел что не сделал этого раньше.
Хотя, вероятно, меня и не одобрят.
я для вас написал маленькую программу на sed, и потратил на её написание минут 10.
Поймите - sed, это и есть та самая "маленькая программа", т.е. вы изобрели велосипед.
На самом деле, на sed и писать-то не нужно, просто переводим ТЗ на язык sed, вот и всё. Я абсолютно не понимаю, чем вы занимались столько времени, если решение очевидно?
вот способ sash-kan'а - это безусловно сложно. потому-что, при всём уважении, он выбрал не тот инструмент. dd предназначена для работы с байтами, и пользоваться ею для обработки текста по меньшей мере странно, особенно учитывая, что есть sed и perl, специально заточенные для обработки текстов.
Его пост мне видится как руководство по закручиванию гвоздей отвёрткой.
-
/dev/random
- Администратор
- Сообщения: 5456
- ОС: Gentoo
Re: регулярные выражения - поиск и замена во множестве файлов
drBatty писал(а): ↑18.08.2011 18:28вот способ sash-kan'а - это безусловно сложно. потому-что, при всём уважении, он выбрал не тот инструмент. dd предназначена для работы с байтами, и пользоваться ею для обработки текста по меньшей мере странно, особенно учитывая, что есть sed и perl, специально заточенные для обработки текстов.
Его пост мне видится как руководство по закручиванию гвоздей отвёрткой.
dd в этой ситуации, действительно, как вы выразились, "закручивание гвоздей отвёрткой", но и sed не лучше. Он работает _со строками_, и нет никакой гарантии, что теги будут разбиты на строки так, как вам хочется. Для работы с xml/html следует использовать утилиты, предназначенные для работы с xml/html, и только их. Например, xsh. Остальное - "закручивание гвоздей отвёрткой".
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
drBatty писал(а): ↑18.08.2011 18:28вот способ sash-kan'а - это безусловно сложно. потому-что, при всём уважении, он выбрал не тот инструмент. dd предназначена для работы с байтами, и пользоваться ею для обработки текста по меньшей мере странно, особенно учитывая, что есть sed и perl, специально заточенные для обработки текстов.
ничуть не спорю· для частных случаев всегда лучше частное решение·QUOTE писал(а):Его пост мне видится как руководство по закручиванию гвоздей отвёрткой.
теперь немного конкретики:
1. ваш скрипт удаляет и окружающие искомую подстроку тэги <table> </table>, что, как я понял, не требуется· но это частности·
2. другое дело, что ваш скрипт «ломается» на примере из моего поста:
Shell
$ cat file.in
<html>
<table>
<table>
text 123 text
</table>
</table>
<table>
<table>
</table>
123 text
</table>
</html>
$ ./sed file.in
<html>
<table>
</table>
<table>
<table>
</table>
123 text
</table>
</html>«123 text» так и осталось· и это тоже частности·
так частности и складываются в _частное_ решение·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
а, не разглядел· на ваших данных эта строка тоже остаётся·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
кстати, не понял логики:
они же находятся ровно на одном и том же уровне вложенности·
если удаляется и "2", стоящая в пятой строке исходного файла, почему не удаляется "1", стоящая во второй строке исходного файла?
они же находятся ровно на одном и том же уровне вложенности·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
кстати, нашёл ошибку в своём скрипте·
прилагаю поправленную и чуть причёсанную версию:
три переменных в начале файла задают:
search — собственно искомую строку
tag — название тэга
with_tags — удалять вместе с этими тэгами ("1") или только то, что внутри тэгов ("0")·
на двух озвученных примерах работает корректно·
p.s. можно эти три переменные вынести или в позиционные, или в именные параметры· честно говоря, лень· если кому-то скрипт будет полезен более одного раза, то он легко может исправить скрипт так, как ему удобно·
прилагаю поправленную и чуть причёсанную версию:
Shell
$ cat sg
#!/bin/bash
search="123"
with_tags=0
tag="table"
usage() {
echo "usage: $0 <file>"
}
[ "$#" != 1 ] && { usage; exit; }
file=$1
pat="__"
[ "$with_tags" == "1" ] && pat=".."
sgrep -o '%s\n%e ' 'inner (("<'$tag'>"'$pat'"</'$tag'>") containing "'$search'")' $file | \
sed '1s/^/-1 /' | \
while read s e; do n=$(echo "$e-($s)-1" | bc); b=$(echo "$s+1" | bc); echo "$b $n"; done | \
sed -r '$s/-[0-9]+$//;s/ ([0-9]+)$/ count=\1/;s/^([0-9]+) /dd if='$file' bs=1 skip=\1 /;s!$! 2>/dev/null!' | \
while read c; do eval "$c"; doneтри переменных в начале файла задают:
search — собственно искомую строку
tag — название тэга
with_tags — удалять вместе с этими тэгами ("1") или только то, что внутри тэгов ("0")·
на двух озвученных примерах работает корректно·
p.s. можно эти три переменные вынести или в позиционные, или в именные параметры· честно говоря, лень· если кому-то скрипт будет полезен более одного раза, то он легко может исправить скрипт так, как ему удобно·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
sgrep вполне сносно подходит на роль утилиты, умеющей работать с wikipedia://sgml/dev/random писал(а): ↑18.08.2011 20:59Для работы с xml/html следует использовать утилиты, предназначенные для работы с xml/html, и только их.
http://bugs.debian.org/182449
приходится обходиться тем, что есть (улыбка)
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
vlav
- Сообщения: 242
Re: регулярные выражения - поиск и замена во множестве файлов
Мне показалось, что sgrep - именно частный случай, который надо компилировать и которого нет в дистрибутиве. Только название претенциозное.
С sed вариант действительно изящен, если знать его язык. Но забивать им голову хочется только "в разумных рамках" иначе, для разовых задач, это просто вредно для здоровья.
ИМХО
С sed вариант действительно изящен, если знать его язык. Но забивать им голову хочется только "в разумных рамках" иначе, для разовых задач, это просто вредно для здоровья.
ИМХО
любимая ОС- FC
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
в debian gnu/linux имеется·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: регулярные выражения - поиск и замена во множестве файлов
/dev/random писал(а): ↑18.08.2011 20:59"закручивание гвоздей отвёрткой", но и sed не лучше. Он работает _со строками_, и нет никакой гарантии, что теги будут разбиты на строки так, как вам хочется.
к счастью, в sed есть способы обхода данного ограничения, и я их применил. Мой скрипт не обрабатывает стоки по одной, после нахождения <table> скрипт склеевает все последующие строки в одну, до следующей </table>.
/dev/random писал(а): ↑18.08.2011 20:59Для работы с xml/html следует использовать утилиты, предназначенные для работы с xml/html, и только их. Например, xsh. Остальное - "закручивание гвоздей отвёрткой".
вовсе нет. Ибо xml/html == текст. И текстовый редактор отлично справляется.
1. это я не заметил. думал так надо. Есть второй вариант в сл. посте.
2. а это не баг, а фича. Мой скрипт считает ключевое слово 123 ключевым только тогда, когда оно включено в самый глубоковложенный <table></table>, у вас это не так. Я ведь специально привёл вывод. Просто условие неоднозначное, и непонятно, чего надо ТСу. Точнее, его вообще это не волнует, ибо вложенных блоков у него просто нет.
конечно - данный sed скрипт - частное решение. Просто sed скрипт в общем == общее решение проблемы. (:
ну вот у меня тут на практике попалась похожая задача, но в ней чётко оговаривалось, что ключ считается ключом только когда он внутри блока. блоки вида <table><table></table>KEY</table> ключевыми не считаются. Скрипт можно и изменить, если хотите. Я думаю, вы согласны, что для меня это - как два байта переслать (:
мне просто такие задачи еженедельно встречаются. Если вам обработка текста нужна раз в году, то конечно лучше использовать любимый C++|php|msvb (:
в слаке нет, и я не вижу необходимости собирать программу ради задачи, которая с лёгкостью решается встроенными методами. Но что самое обидное, если я перенесу ваш скрипт на какой-нить сервер, то вполне возможно, что придётся туда-же тащить и sgrep. А если у меня нет прав рута? А если одмин против? А если?.. А вот sed она везде есть.
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
я говорю о другой ситуации· получилось, что от "<table>1 KEY 2</table>" ваш скрипт оставит "<table>1</table>", что как-то совсем не похоже ни на какую задачу·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: регулярные выражения - поиск и замена во множестве файлов
почему? оба варианта оставят как надо.
вот если будет
Код: Выделить всё
aaa<table>
KEY
</table>bbbто действительно, первый вариант вырежет всё это целиком, вместе с aaa и bbb.
но второй вариант сработает как надо.
KEY - ничего не отрезает, а просто приводит к переходу во внутренний цикл, где строчки не печатаются. Причём не только с KEY, но и с <table> до KEY тоже.
Причём все эти строчки обрабатываются вместе, потому нет никакой разницы, как вы их порежете. (как и нужно, при обработке HTML/XML).
-
sash-kan
- Администратор
- Сообщения: 13939
- Статус: oel ngati kameie
- ОС: GNU
Re: регулярные выражения - поиск и замена во множестве файлов
drBatty
жирным выделено то, что ваш скрипт вырезал:
он оставил единичку в первой строке, удалив всё остальное на том же уровне вложенности· это явно абсолютно нелогичное поведение·
жирным выделено то, что ваш скрипт вырезал:
QUOTE писал(а):<table>1
<table>2
text 123 text
</table>2
</table>1
он оставил единичку в первой строке, удалив всё остальное на том же уровне вложенности· это явно абсолютно нелогичное поведение·
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
при сбоях форума см.блог
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: регулярные выражения - поиск и замена во множестве файлов
sash-kan
второй вариант работает правильно.
второй вариант работает правильно.
Код: Выделить всё
<html>
<table>1
<table>вырезано</table>2
</table>1