zoukankan      html  css  js  c++  java
  • lua 解析ffmpeg结构体时候用的正则表达式

    local text="AVCodec ff_jpeg2000_decoder = {"
    .."    .name           = \"j2k\",\n"
    .."    .type           = AVMEDIA_TYPE_VIDEO,\n"
    .."    .id             = CODEC_ID_JPEG2000,\n"
    .."    .priv_data_size = sizeof(J2kDecoderContext),\n"
    .."    .init           = j2kdec_init,\n"
    .."    .close          = decode_end,\n"
    .."    .decode         = decode_frame,\n"
    .."    .capabilities = CODEC_CAP_EXPERIMENTAL,\n"
    .."    .long_name = NULL_IF_CONFIG_SMALL(\"JPEG 2000\"),\n"
    .."    .pix_fmts =\n"
    .."        (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_RGB24, PIX_FMT_NONE}\n"
    .."};\n";
    local text2=""
    .."    .name           = \"j2k\",\n"
    .."    .type           = AVMEDIA_TYPE_VIDEO,\n"
    .."    .id             = CODEC_ID_JPEG2000,\n"
    .."    .priv_data_size = sizeof(J2kDecoderContext),\n"
    .."    .init           = j2kdec_init,\n"
    .."    .close          = decode_end,\n"
    .."    .decode         = decode_frame,\n"
    .."    .capabilities = CODEC_CAP_EXPERIMENTAL,\n"
    .."    .long_name = NULL_IF_CONFIG_SMALL(\"JPEG 2000\"),\n"
    .."    .pix_fmts =\n"
    .."        (const enum PixelFormat[]) {PIX_FMT_GRAY8, PIX_FMT_RGB24, \n\nPIX_FMT_NONE}\n";
    local szreg= "(%.%s-[%w_]+%s-=%s-%s-[^%b{}]-%s-[,}])";
    local szreg2="(%.%s-[%w_]+%s-=%s-%b()%s-%b{}%s-[,}])"
    --"(%b()%s-%b{})-"
    local szreg3="(%.%s-[%w_]+%s-=%s-".."(%s-[^%b{}]-)((%b()%s-%b{})-)" .."%s-[,}])";
    for index,value in string.gmatch(text,szreg3) do
    	print("index\t",index,"\tvalue",value);
    end
    local tmp="%.%s-[%w_]+%s-=[%s-[%s%w_%b{}\"%[%]%(%)]+]?[%s-[%w_%b()\"]+]?[,}]";
    local tmp2="%.%s-[%w_]+%s-=[%s-[%s%w_\"%[%]%(%)]+[%b{}]-]?[%s-[%w_%b()\",}]+]?";
    local tmp3="[%.%s-[%w_=]+]?[[%s-[%s%w_\"%[%]%(%)]+[%b{}]-]?[%s-[%w_%b()\"]+[,}]]?]-";
    local tmp4="[%.%s-[%w_=]+]?[[%s-[%s%w_\"%[%]%(%)]+[%b{}]-]?[%b{}]?[%s-[%w_%b()\"]+[,}]]?]-";
    local tmp5="(%.%s-[%w_]+%s-)=(%s-(%b()%s-%b{})([%w_()]+)%s-[,}])";
    --[[for index,value in string.gmatch(text2,"([%.]?%s-[%w_%b()%b{}%[%]\"%s]+%s-)") do
    	print("index\t",index,"\tvalue",value);
    end]]--
    local text3="#if( FF_API_OLD_METADATA2)||\n1\n"
    .."    const AVMetadataConv *metadata_conv;\n"
    .."#elif \nsssss\n"
    .."#if (FF_API_OLD_METADATA2) \n"
    .."#endif\n"
    .."#elif \n"
    .."#endif";
    local text4=".name           = \"video4linux,v4l\","
    print(string.sub(text4,string.find(text4,"%b\"\"")))

    版权所有,未经允许不得擅自转载.

    源自:http://blog.csdn.net/weinyzhou/article/details/7533187

  • 相关阅读:
    利用virtual box安装ubuntu16.4,没有继续(下一步)的解决方案
    最好用的几个谷歌镜像(推荐理由:无广告)
    vs2017和vs2019专业版和企业版
    c# List根据某个属性进行分类,变成以属性名称作为分类的多个List
    vs2015安装编辑神器:resharper10.0
    c# 正则表达式替换字符串中常见的特殊字符
    IL中间语言指令大全
    c#进阶一:使用ILDASM来查看c#中间语言
    SQL server脚本语句积累
    SQLServer事务在C#当中的应用
  • 原文地址:https://www.cnblogs.com/weinyzhou/p/2592479.html
Copyright © 2011-2022 走看看