URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9785
[ Назад ]

Исходное сообщение
"Поиск и вывод фразы"

Отправлено tolkoshto is army , 26-Ноя-13 19:27 
Всем привет. Ответа в интернете не нашёл, поэтому решил спросить у вас, надеюсь поможете  :)

Нужно найти в html файле найти фразу начинащиеся на

    <table class='comm3 test'

  и заканчивающимся на

    </div>


Затем в данном отрывке удалить все англ символы включая "<,/,>". т.е удалить теги и вывести только русский текст.

Реализовать скриптом реально?


Содержание

Сообщения в этом обсуждении
"Поиск и вывод фразы"
Отправлено михалыч , 26-Ноя-13 20:43 
> Всем привет. Ответа в интернете не нашёл, поэтому решил спросить у вас,
> надеюсь поможете  :)
> Нужно найти в html файле найти фразу начинащиеся на
>     <table class='comm3 test'
>   и заканчивающимся на
>     </div>
> Затем в данном отрывке удалить все англ символы включая "<,/,>". т.е удалить
> теги и вывести только русский текст.
> Реализовать скриптом реально?


#!/usr/bin/perl


use strict;
use warnings;


my $file = "/path/to/file";
my @array;


open(FH, $file) or die "Can't read $file: $!";


while(<FH>) {
    push @array, $_ if /<table class='comm3 test'/ .. /<\/div>/;
}


close FH;


for (@array) {
    s/[0-9,a-z,A-Z,\/,<,>,=,\',\"]//g;
    print;
}


Вместо s/[0-9,a-z,A-Z,\/,<,>,=,\',\"]//g;
можно попробовать s/[^а-я,А-Я,-,\s]//g;

"Поиск и вывод фразы"
Отправлено sozidatel , 26-Ноя-13 21:31 
Данным скриптом не получиться. Он просто отсеет в документе не нужные символы, так как строка в документе одна. Есть ещё варианты?


"Поиск и вывод фразы"
Отправлено михалыч , 27-Ноя-13 05:01 
> Данным скриптом не получиться.

вы проверяли? Я, да, у меня работает.

> Он просто отсеет в документе не нужные символы,

а что, разве нужно наоборот, добавить?
смотрим изначальный посыл
>> Затем в данном отрывке удалить все англ символы включая "<,/,>". т.е удалить теги и вывести только русский текст.

А это как понимать:
> так как строка в документе одна

в каком документе? какая строка?
В изначальном файле HTML? скрипте?


"Поиск и вывод фразы"
Отправлено tolkoshto is army , 27-Ноя-13 09:57 

> А это как понимать:
>> так как строка в документе одна
> в каком документе? какая строка?
> В изначальном файле HTML? скрипте?

Сейчас объясню. Данном html документе имеиться лишь одна длинная строка вида..
<html><head></head><body>test<div>(и куча-куча разного кода, вплоть до 14000 тысяч символов). Понимаете?


"Поиск и вывод фразы"
Отправлено михалыч , 27-Ноя-13 13:11 
>> А это как понимать:
>>> так как строка в документе одна
>> в каком документе? какая строка?
>> В изначальном файле HTML? скрипте?
> Сейчас объясню. Данном html документе имеиться лишь одна длинная строка вида..
> <html><head></head><body>test<div>(и куча-куча разного кода, вплоть до 14000 тысяч символов).
> Понимаете?

типа так
<html><head></head><body>Ненужный текст<table class='comm3 test'><div>Text<p>Нужный</p> текст <a>link</a><b>Жирный текст</b>test</div></table></body></html>

#!/usr/bin/perl

use strict;
use warnings;

my $file = "/path/to/file";

open(FH, $file) or die "Can't read $file: $!";

while ( <FH> ) {
    /<table class='comm3 test'(.*)<\/div>/;
    my $txt = $1;
    $txt =~ s/<.*?>//gi;
    $txt =~ s/[0-9,a-z,\/,<,>,=,\',\"]//gi;
    print $txt;
}

close FH;

получаем на выходе
Нужный текст Жирный текст


"Поиск и вывод фразы"
Отправлено mowerbread , 26-Ноя-13 23:11 
>[оверквотинг удален]
> /<\/div>/;
> }
> close FH;
> for (@array) {
>     s/[0-9,a-z,A-Z,\/,<,>,=,\',\"]//g;
>     print;
> }
>

> Вместо s/[0-9,a-z,A-Z,\/,<,>,=,\',\"]//g;
> можно попробовать s/[^а-я,А-Я,-,\s]//g;

Можно ли добавить слова которые не будут исключаться из поиска? (внутри фразы на англ)