javascript - 正则表达式解析问题ecmascript

标签 javascript regex web-scraping ecmascript-6

有人可以帮我修改这个正则表达式吗:

var re = /<a href='([\s\S]*?)'([\s\S]*?)'[\s\S]*?<img src='([\s\S]*?)'[\s\S]*?<\/a>/g;
 var match = re.exec(doc);

我需要能够仅提取链接:

while (match) {var url = BASE_URL + match[1]; page.appendItem(plugin.getDescriptor().id + ':index:' + escape(BASE_URL + match[1]), 'video', {
                title: new showtime.RichText(match[2]),
                icon: checkUrl(match[3])
            });

            match = re.exec(doc);
        }

我试图用两个变量来解决这个问题,但它不起作用......

var b = "(id=\d*)'";

var a = "<a href='/details.php[*?]";

目标字符串最初是这样的:

<a href='/details.php?id=1578358' title='Аритмия / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://picplus.ru/img/1711/15/05d0f570.jpg' alt=''></a>
<a href='/details.php?id=1557197' title='Выстрел в пустоту (Главарь) / Shot Caller / 2017 / ПМ / BDRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/9/7/1557197.jpg' alt=''></a>
<a href='/details.php?id=1564178' title='Бабушка лёгкого поведения / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/7/8/1564178.jpg' alt=''></a>
<a href='/details.php?id=1570558' title='Напарник / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/5/8/1570558.jpg' alt=''></a>
<a href='/details.php?id=1579515' title='Мадам / Madame / 2017 / ДБ / WEB-DLRip' target='_blank'><img src='http://picplus.ru/img/1711/22/d03ca6e5.jpg' alt=''></a>
<a href='/details.php?id=1571565' title='Про любовь. Только для взрослых / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/6/5/1571565.jpg' alt=''></a>

现在他们更改了代码,正则表达式不再起作用......

</div><div class='mn1_content'><div class=pad0x0x5x0><ul class=lis><li class=mn><a href="/top.php" title="Топ раздач">Топ раздач</a></li><li><a href="/top.php?w=1" title="Топ раздач недели">Топ раздач недели</a></li><li><a href="/top.php?w=2" title="Топ раздач месяца">Топ раздач месяца</a></li><li><a href="/top.php?w=3" title="Топ раздач 3 месяца">Топ раздач 3 месяца</a></li></ul></div><div class='bx1 stable'><a href='/details.php?SbI135km9&amp;id=1563719' title='Пираты Карибского моря: Мертвецы не рассказывают сказки / Pirates of the Caribbean: Dead Men Tell No Tales / 2017 / ДБ / HDRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/1/9/1563719.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1578358' title='Аритмия / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://picplus.ru/img/1711/15/05d0f570.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1557197' title='Выстрел в пустоту (Главарь) / Shot Caller / 2017 / ПМ / BDRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/9/7/1557197.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1564178' title='Бабушка лёгкого поведения / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/7/8/1564178.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1570558' title='Напарник / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/5/8/1570558.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1579515' title='Мадам / Madame / 2017 / ДБ / WEB-DLRip' target='_blank'><img src='http://picplus.ru/img/1711/22/d03ca6e5.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1571565' title='Про любовь. Только для взрослых / 2017 / РУ / WEB-DLRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/6/5/1571565.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1576347' title='Троцкий (1-8 серии из 8) / 2017 / РУ / SATRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/4/7/1576347.jpg' alt=''></a>
<a href='/details.php?SbI135km9&amp;id=1569291' title='Оно / It / 2017 / ПМ / HDTVRip' target='_blank'><img src='http://s.kinozal.tv/i/poster/9/1/1569291.jpg' alt=''></a>

我需要的是一个正则表达式来获取链接:

<a href='/details.php?SbI135km9&amp;id=1578358'

并且只保留这个:/details.php?id=1578358。从“?”中删除 14 个字符直到“id”以及“=”后面的所有数字

请原谅我的英语,提前谢谢您

最佳答案

如果我没记错的话,您想继续使用代码中的匹配项,但您想从 match[1] 中删除这样的数据 SbI135km9&看起来像:

/details.php?SbI135km9&id=1563719

如果是这种情况,您可以使用原始正则表达式并替换 while 循环中的 match[1] 数据。

要匹配要替换的数据,您可以将任何单词字符一次或多次 \w+ ,然后 $amp; 并将其替换为空字符串

例如:

var m1 = match[1].replace(/\w+&/, "");

关于javascript - 正则表达式解析问题ecmascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47575757/

相关文章:

javascript - 是否可以在 Javascript 中覆盖 window.location.hostname?

PHP 正则表达式 : Problem with Smiley `:)` and `:))`

regex - 在 Ubuntu 中使用重命名递归更改文件前缀,(正则表达式不起作用)

javascript - 爬取网页并在 Python 中调用 javascript 函数

Javascript 返回和 if/else

javascript - 在 jQuery 中删除元素的问题

javascript - 如何仅在按下取消按钮时关闭模态弹出窗口?

java - 正则表达式 - 具有多个句点的文件名

python - Scrapy 蜘蛛在第一次请求 start_urls 后关闭

python - 通过实时拍卖监控网页