Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подскажите регулярку. Нужно вырезать tr и всё их содержимое. (https://javascript.ru/forum/events/52024-podskazhite-regulyarku-nuzhno-vyrezat-tr-i-vsjo-ikh-soderzhimoe.html)

SokDobriy 01.12.2014 00:31

Подскажите регулярку. Нужно вырезать tr и всё их содержимое.
 
Подскажите регулярку. Нужно вырезать все <tr></tr>, в плане того, что нужны только <tr>содержимое</tr>, со страницы и всё их содержимое, и убрать все встречающиеся теги <p> и </p> без их содержимого.
Таблиц на странице несколько. Заранее не известно сколько. В каждой таблице всё это дело находится между тегами <tbody>.

krutoy 01.12.2014 01:06

re=/<tr>.*?<\/tr>/g
s="<body><tr><span>foo</span></tr>foo<div>foo</div><tr>bar</tr></body>"
alert(s.match(re).join(""))
//  <tr><span>foo</span></tr><tr>bar</tr>

Цитата:

убрать все встречающиеся теги <p> и </p> без их содержимого.
re=/<p>([^>]+)<\/p>/g
s="<div><p>foo</p></div><p>bar</p>"
alert(s.replace(re, "$1"))
// <div>foo</div>bar

А остальные теги оставлять?

SokDobriy 01.12.2014 01:26

Не получается. Тут запускаю всё ок, а у себя нет. Не пойму в чём дело.
function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                var allText = rawFile.responseText;
                
                allText.match(/<tr>.*?<\/tr>/g);
       
                alert(allText);
                
            }
        }
    }
    rawFile.send(null);
}


А с джойном вообще ничего не выводит.

krutoy 01.12.2014 01:50

SokDobriy,
Вот так попробуй, видимо там проблемы с переносом строк:
re=/<tr>[\s\S]*?<\/tr>/gm
s="<body>\n<tr><span>foo\n</span></tr>\nfoo<div>foo</div>\n<tr>bar</tr><tr>baz</tr></body>"
alert(s.match(re).join(""))

SokDobriy 01.12.2014 02:03

Вложений: 1
Блин, всё равно(
Да, остальные теги, которые между tr нужны. Просто стереть сам тег <p> и </p>.
Вот сам файл

krutoy 01.12.2014 02:09

SokDobriy,
Слушай, он ж у тебя бинарный, или хз. Его к текстовому виду надо как то приводить.

SokDobriy 01.12.2014 02:27

krutoy,
Я просто запаковал, там html внутри.
Я этот html открываю как файл юзерскриптом и читаю его.

krutoy 01.12.2014 02:30

SokDobriy,
я распаковал его, само сабой, это буфер какой-то, это не текстовый файл

SokDobriy 01.12.2014 02:54

krutoy,
Это html файл, который функцией читается как текстовый.

SokDobriy 01.12.2014 02:55

Или я что-то недопетриваю

krutoy 01.12.2014 03:12

SokDobriy,
короче, я его сконвертил, как смог, обработал,
// ::: 
fs=require("fs")
text=fs.readFileSync("new/SUPER.htm", "utf8")
text=text.replace(/[\s\n\r]/gm, "") //на всякий случай:)
re=/<tr>[\s\S]*?<\/tr>/gm
text=text.match(re).join("\n\n")
re=/<p>([\s\S]*?)<\/p>/gm
text=text.replace(re, "$1")

//  <tr><td>8712581336028</td><td>SHE1350</td><td><C;LB820@:04;980B5?@>3.PHILIPSHD303</td><td>1.000</td><td>123.68</td><td>1000938226</td></tr>
//  
//  <tr><td>6923410710076</td><td>SHE7000WT/10</td><td>=0CH=8:82=CB@8:0=0;L=K5</td><td>1.000</td><td>555.83</td><td>1001024044</td></tr>
//  
//  <tr><td>01001024044</td><td>SHE7000WT/10</td><td>=0CH=8:82=CB@8:0=0;L=K5</td><td>1.000</td><td>669.00</td><td>01001024044</td></tr>
//  
//  <tr><td>8712581531041</td><td>SHS390</td><td>=0CH=8:8A?>@B82=K5240<</td><td>1.000</td><td>430.00</td><td>1000697748</td></tr>
//  
//  <tr><td>8712581401801</td><td>SHH1900/10</td><td>=0CH=8:8?>;=>@07<5@=K5</td><td>1.000</td><td>743.70</td><td>1000914320</td></tr>
//  
//  <tr><td>8712581584276</td><td>SHH2500/10</td><td>=0CH=8:8?>;=>@07<5@=K5</td><td>2.000</td><td>1769.26</td><td>1000914319</td></tr>
//  
//  <tr><td>B>3>?>3@C??5</td><tdcolspan="2">0CH=8:8/:>;>=:8:</td><td>7.000</td><td>4291.47</td><td></td></tr>
//  
//  <tr><td>01001022360</td><td>1530/00</td><td>@048>?@85<=8:PHILIPSAE</td><td>1.000</td><td>649.00</td><td>1001022360</td></tr>
//  
//  <tr><td>B>3>?>3@C??5</td><td>048>?@85<=8:8</td><td></td><td>1.000</td><td>649.00</td><td></td></tr>
//  
//  <tr><td>8712581708474</td><td>244109/60</td><td>B5;5287>@LCD24&quot;PHILIP</td><td>1.000</td><td>9951.83</td><td>1001017196</td></tr>
//  
//  <tr><td>B>3>?>3@C??5</td><td>5"5;5287>@KLCD</td><td>24&quot;-36&quot;:</td><td>1.000</td><td>9951.83</td><td></td></tr>
//  
//  <tr><td>8712581709105</td><td>40HFT4509/60</td><td>B5;5287>@LCD40&quot;PHILIP</td><td>1.000</td><td>19082.45</td><td>1001024632</td></tr>
//  
//  <tr><td>8712581672027</td><td>46HFL4308T/60</td><td>B5;5287>@LCD46&quot;PHILIP</td><td>1.000</td><td>24892.00</td><td>1000981202</td></tr>
//  
//  <tr><td>01001024632</td><td>40HFT4509/60</td><td>B5;5287>@LCD40&quot;PHILIP</td><td>1.000</td><td>19082.00</td><td>1001024632</td></tr>
//  
//  <tr><td>8712581718428</td><td>40HFT4309/60</td><td>B5;5287>@LCD40&quot;PHILIP</td><td>1.000</td><td>17670.77</td><td>1001024631</td></tr>
//  
//  <tr><td>8712581725853</td><td>42PFT6309/60</td><td>B5;5287>@LCD42&quot;PHILIP</td><td>3.000</td><td>76898.11</td><td>1001027523</td></tr>
//  
//  <tr><td>01001027523</td><td>42HFT6309/60</td><td>B5;5287>@LCD42&quot;PHILIP</td><td>1.000</td><td>24642.70</td><td>1001027523</td></tr>
//  
//  <tr><td>B>3>?>3@C??5</td><td>5"5;5287>@KLCD</td><td>37&quot;-52&quot;:</td><td>8.000</td><td>182268.03</td><td></td></tr>
//  
//  <tr><td>B>3>?>3@C??5</td><td>5"5;5287>@KLCD</td><td></td><td>9.000</td><td>192219.86</td><td></td></tr>
//  
//  <tr><td>B>3>?>3@C??5</td><td>5"5;5287>@K</td><td></td><td>9.000</td><td>192219.86</td><td>пїЅ;</td></tr>
//  
//  <tr><td>8710101675268</td><td>SBCMD110</td><td><8:@>D>=+:015;L1,5<PHI</td><td>1.000</td><td>549.00</td><td>1000056221</td></tr>
//  
//  <tr><td>8710101675275</td><td>SBCDMD150</td><td><8:@>D>=>70?8>LN+:015;</td><td>1.000</td><td>406.83</td><td>1000056222</td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><td>58:@>D>=K</td><td></td><td>2.000</td><td>955.83</td><td></td></tr>
//  
//  <tr><td>8712581550813</td><td>AJ1003/12</td><td>@048>G0AKA1C48;L=8:><</td><td>1.000</td><td>1673.26</td><td>1000979902</td></tr>
//  
//  <tr><td>8712581669348</td><td>AJ3400/12</td><td>@048>G0AKPhilipsAJ3400</td><td>3.000</td><td>2465.42</td><td>1001022343</td></tr>
//  
//  <tr><td>8712581639396</td><td>AJ3123/12</td><td>@048>G0AKA1C48;L=8:><</td><td>3.000</td><td>2157.17</td><td>1000922199</td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">5048>G0AK,G0AKM;5:B@>==K5:</td><td>7.000</td><td>6295.85</td><td></td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">5C48>-845>B5E=8:0:</td><td>47.000</td><td>221150.92</td><td></td></tr>
//  
//  <tr><td>8712581664510</td><td>D2001B</td><td>0??0@0BB5;5D>==K9DECT</td><td>1.000</td><td>779.55</td><td>1000997965</td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><td>5048>B5;5D>=K</td><td>DECT:</td><td>1.000</td><td>779.55</td><td>-.tiSпїЅ</td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">5><0H=858>D8A=K5B5;5D>=K':</td><td>1.000</td><td>779.55</td><td></td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><td>5"5;5D>=K</td><td></td><td>1.000</td><td>779.55</td><td></td></tr>
//  
//  <tr><td>8712581690427</td><td>SHA20/51</td><td>:>;>=:8<C;LB8<5489=K5H</td><td>1.000</td><td>414.21</td><td>1000979903</td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">5><?LNB5@=K5:>;>=:8:</td><td>1.000</td><td>414.21</td><td></td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">5><?LNB5@=K50:A5AAC0@K:</td><td>1.000</td><td>414.21</td><td></td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">55@A>=0;L=K5:><?LNB5@K:</td><td>1.000</td><td>414.21</td><td>;пїЅi%B</td></tr>
//  
//  <tr><td>B>3>?>3@C??</td><tdcolspan="2">5B45;15KB>20OB5:=8:080C48>-284:</td><td>120.000</td><td>354390.04</td><td></td></tr>
//

Вроде отфильтровалось, то что требовалось

SokDobriy 06.12.2014 05:02

krutoy,
Спасибо!


Часовой пояс GMT +3, время: 07:01.