Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正则表达式解析问题ecmascript_Javascript_Regex_Web Scraping_Ecmascript 6 - Fatal编程技术网

Javascript 正则表达式解析问题ecmascript

Javascript 正则表达式解析问题ecmascript,javascript,regex,web-scraping,ecmascript-6,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); 我试着用两个变量来解释它,但它不起作用 var b = "(id=\d*)'"; var a = "<a href='/details.php[*?]"; var b=“(id=\d*)”; 变量a=”

有人能帮我添加这个正则表达式吗:

var re = /<a href='([\s\S]*?)'([\s\S]*?)'[\s\S]*?<img src='([\s\S]*?)'[\s\S]*?<\/a>/g;
 var match = re.exec(doc);
我试着用两个变量来解释它,但它不起作用

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

var a = "<a href='/details.php[*?]";
var b=“(id=\d*)”;
变量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'

只需将
href
的正则表达式分成两部分:第一部分您感兴趣,第二部分可能不感兴趣

<a href='([^\?]*)(.*?)'(?:[\s\S]*?)'[\s\S]*?<img src='([\s\S]*?)'[\s\S]*?<\/a>
这应该可以

let re = /(^.+\')(\/[a-z]+\.[a-z]+\?)(.{0,})(id=[0-9]+)(.+)/gi
let link = "<a href='/details.php?asdasd;id=1578358&asdasdasd'"
let replaced = link.replace(re, "$2$4");
let re=/(^.+\')(\/[a-z]+\.[a-z]+\?)(.{0,})(id=[0-9]+)(.+)/gi
让link=“简短
这更像是DOM解析器的工作,但是,假设这是已知的DOM元素的子集,您可以使用以下正则表达式和代码来匹配链接

密码
注意:我将上面的链接设置为PCRE regex,因为JavaScript风格不显示匹配项;这两种发动机的工作原理完全相同

<a href='([^']*)'[\s\S]*?'[\s\S]*?<img src='([^']*)'[\s\S]*?<\/a>
    • `
      var re=/如果我没有弄错的话,您希望继续使用代码中的匹配项,但您希望删除类似以下内容的数据
      SbI135km9&
      匹配[1]
      如下所示:

      /details.php?SbI135km9&;id=1563719

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

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

      例如:


      var m1=match[1]。替换(/\w+&;/,“”)

      为什么不将其转换为HTML并使用DOM方法呢!
      let re = /(^.+\')(\/[a-z]+\.[a-z]+\?)(.{0,})(id=[0-9]+)(.+)/gi
      let link = "<a href='/details.php?asdasd;id=1578358&asdasdasd'"
      let replaced = link.replace(re, "$2$4");
      
      <a href='([^']*)'[\s\S]*?'[\s\S]*?<img src='([^']*)'[\s\S]*?<\/a>