2016-11-22 6 views
-6

Предположим, у меня есть следующий текстКак извлечь строку с помощью регулярного выражения?

for (;;);{"__ar":1,"__sf":"k","payload":null,"domops":[["appendContent","^div.fbProfileBrowserListContainer",true,{"__html":"\u003Cdiv class=\"fbProfileBrowserList expandedList\" id=\"100008123852509\">\u003Cul class=\"uiList clearfix _5bbv _4kg _704 _4ks\">\u003Cli class=\"fbProfileBrowserListItem\">\u003Cdiv class=\"clearfix _5qo4\">\u003Ca class=\"_8o _8t lfloat _ohe\" href=\"https:\/\/www.facebook.com\/tasvirmanepal\/?fref=pb\" tabindex=\"-1\" aria-hidden=\"true\">\u003Cimg class=\"_s0 _rw img\" src=\"https:\/\/fb-s-b-a.akamaihd.net\/h-ak-xta1\/v\/t1.0-1\/c13.0.50.50\/p50x50\/12246747_952307471472706_3389977056619055535_n.jpg?oh=fdcd99bd098ad7d60b67701358bdbc97&oe=58D45D87&__gda__=1489984135_7befa40c475cf7f2a6aa021e97d7f429\" alt=\"\" \/>\u003C\/a>\u003Cdiv class=\"clearfix _42ef\">\u003Cdiv class=\"_6a rfloat _ohf\">\u003Cdiv class=\"_6a _6b\" style=\"height:50px\">\u003C\/div>\u003Cdiv class=\"_6a _6b\">\u003Cdiv class=\"_5t4x\">\u003Cspan

Теперь я хочу, чтобы извлечь строку как

src=\"https:\/\/fb-s-b-a.akamaihd.net\/h-ak-xta1\/v\/t1.0-1\/c13.0.50.50\/p50x50\/12246747_952307471472706_3389977056619055535_n.jpg?oh=fdcd99bd098ad7d60b67701358bdbc97&oe=58D45D87&__gda__=1489984135_7befa40c475cf7f2a6aa021e97d7f429\"

+1

Пожалуйста, поделитесь код у вас есть до сих пор, и почему он не дает желаемых результатов. – wdosanjos

ответ

0

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

говорят:

  • Матч между двойными кавычками, и оленья кожа содержит кавычки?
  • Матч предшествует src=\"

на сайте как http://regexr.com/ вы можете легко проверить ваши регулярные выражения.

Это возможное регулярное выражение: src=\\\"[^"]*", но оно не поможет вам с угловыми корпусами.

он в основном соответствует всем, что начинается с src\", а затем принимает любой (ноль или более) символ, кроме двойной кавычки ", а затем также включает двойную кавычку.

0

Пожалуйста, попробуйте следующее:

const regex = /src=\\"[^"]*?\\"/g; 
 
const str = `for (;;);{"__ar":1,"__sf":"k","payload":null,"domops":[["appendContent","^div.fbProfileBrowserListContainer",true,{"__html":"\\u003Cdiv class=\\"fbProfileBrowserList expandedList\\" id=\\"100008123852509\\">\\u003Cul class=\\"uiList clearfix _5bbv _4kg _704 _4ks\\">\\u003Cli class=\\"fbProfileBrowserListItem\\">\\u003Cdiv class=\\"clearfix _5qo4\\">\\u003Ca class=\\"_8o _8t lfloat _ohe\\" href=\\"https:\\/\\/www.facebook.com\\/tasvirmanepal\\/?fref=pb\\" tabindex=\\"-1\\" aria-hidden=\\"true\\">\\u003Cimg class=\\"_s0 _rw img\\" src=\\"https:\\/\\/fb-s-b-a.akamaihd.net\\/h-ak-xta1\\/v\\/t1.0-1\\/c13.0.50.50\\/p50x50\\/12246747_952307471472706_3389977056619055535_n.jpg?oh=fdcd99bd098ad7d60b67701358bdbc97&oe=58D45D87&__gda__=1489984135_7befa40c475cf7f2a6aa021e97d7f429\\" alt=\\"\\" \\/>\\u003C\\/a>\\u003Cdiv class=\\"clearfix _42ef\\">\\u003Cdiv class=\\"_6a rfloat _ohf\\">\\u003Cdiv class=\\"_6a _6b\\" style=\\"height:50px\\">\\u003C\\/div>\\u003Cdiv class=\\"_6a _6b\\">\\u003Cdiv class=\\"_5t4x\\">\\u003Cspan`; 
 
let m; 
 

 
while ((m = regex.exec(str)) !== null) { 
 
    // This is necessary to avoid infinite loops with zero-width matches 
 
    if (m.index === regex.lastIndex) { 
 
     regex.lastIndex++; 
 
    } 
 
    
 
    // The result can be accessed through the `m`-variable. 
 
    m.forEach((match, groupIndex) => { 
 
     console.log(`Found match, group ${groupIndex}: ${match}`); 
 
    }); 
 
}

Смежные вопросы