Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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_Javascript_Regex_Web Scraping_Screen Scraping - Fatal编程技术网

正则表达式来刮除JavaScript

正则表达式来刮除JavaScript,javascript,regex,web-scraping,screen-scraping,Javascript,Regex,Web Scraping,Screen Scraping,我正在使用casperjs抓取一个网页,它可以很好地处理全局JavaScript值,但现在我只能从jQuery闭包中取出变量,如下所示: $(document).ready(function(){ var storeData = { lon: "-5.91829", lat: "54.65583", name: "John Smith" }; SOMEGLOBALVAR.storeFinder.addStore(storeData); }); 我找不到办法弄到朗、拉特和名字 所以我决定选择脚本

我正在使用casperjs抓取一个网页,它可以很好地处理全局JavaScript值,但现在我只能从jQuery闭包中取出变量,如下所示:

$(document).ready(function(){
var storeData = {
lon: "-5.91829",
lat: "54.65583",
name: "John Smith"
};
SOMEGLOBALVAR.storeFinder.addStore(storeData);
});
我找不到办法弄到朗、拉特和名字

所以我决定选择脚本标记,然后使用正则表达式从脚本标记中取出代码。这是我用在线编辑器构建的丑陋的正则表达式:

/var storeData = {\n\t*id.*,\n\t.*(\n\t)*\n\t*.*\n\t*.*\n\t*[a-zA-Z: 0- 9,"]*\n\t*[a-zA-Z: 0-9,"]*\n\t*[a-zA-Z: 0-9,"]*\n\t*\};/g
因此,我的问题分为两部分:

  • 有没有办法访问该函数中的lon、lat和name?(我正在抓取,因此无法更改函数本身)

  • 我怎样才能使我的正则表达式更好


  • 在这里,您可以通过使用带有捕获组的正则表达式(共有3个)来提取这些值:

    请注意,我使用
    [\s\s]
    匹配换行符,因为JavaScript中没有单行选项

    var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
    var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
    如果((m=re.exec(str))!==null){
    document.getElementById(“res”).innerHTML=m[1]+“
    ”+m[2]+“
    ”+m[3]; }

    在这里,您可以使用带有捕获组的正则表达式提取这些值(共有3个):

    请注意,我使用
    [\s\s]
    匹配换行符,因为JavaScript中没有单行选项

    var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
    var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
    如果((m=re.exec(str))!==null){
    document.getElementById(“res”).innerHTML=m[1]+“
    ”+m[2]+“
    ”+m[3]; }

    在这里,您可以使用带有捕获组的正则表达式提取这些值(共有3个):

    请注意,我使用
    [\s\s]
    匹配换行符,因为JavaScript中没有单行选项

    var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
    var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
    如果((m=re.exec(str))!==null){
    document.getElementById(“res”).innerHTML=m[1]+“
    ”+m[2]+“
    ”+m[3]; }

    在这里,您可以使用带有捕获组的正则表达式提取这些值(共有3个):

    请注意,我使用
    [\s\s]
    匹配换行符,因为JavaScript中没有单行选项

    var re=/lon:“([^”]*)”[\s\s]*?lat:\s+”([^”]*)“[\s\s]*?name:\s+”([^”]*)*?/;
    var str='var storeData={\nlon:“-5.91829”,\nlat:“54.65583”,\nname:“John Smith”\n};
    如果((m=re.exec(str))!==null){
    document.getElementById(“res”).innerHTML=m[1]+“
    ”+m[2]+“
    ”+m[3]; }
    lon: "([^"]*)"[\s\S]*?lat:\s+"([^"]*)"[\s\S]*?name:\s+"([^"]*)".*?