lua get file extension first occurrence










1















So i have a url like so



https://example.com/path/to/file/file.mp4/file.jpg


I want to match only the first provided file extension provided not any others people insert into the url.



Example :



function GetFileExtension(url)
return url:match("^.+(%..+)$")
end

local url = "https://example.com/path/to/file/file.mp4/file.jpg"
print(GetFileExtension(url))


Output :



.jpg


The output should be a .mp4 since that is what the file is anything after the first occurrence is ignored on the url.



What is the best way to fix this. Thanks to anyone who can help me and answer my question.










share|improve this question

















  • 1





    url:match"//[^/]+/.-(%.[^/]+)"

    – Egor Skriptunoff
    Nov 14 '18 at 19:10






  • 1





    or (%.[^/]*) to allow empty extensions...

    – Paul Kulchenko
    Nov 14 '18 at 19:34











  • @PaulKulchenko - Are filenames like file. valid?

    – Egor Skriptunoff
    Nov 15 '18 at 7:28












  • Are URLs like https://example.com/path/to/file/../file.mp4/file.jpg possible?

    – Egor Skriptunoff
    Nov 15 '18 at 7:31















1















So i have a url like so



https://example.com/path/to/file/file.mp4/file.jpg


I want to match only the first provided file extension provided not any others people insert into the url.



Example :



function GetFileExtension(url)
return url:match("^.+(%..+)$")
end

local url = "https://example.com/path/to/file/file.mp4/file.jpg"
print(GetFileExtension(url))


Output :



.jpg


The output should be a .mp4 since that is what the file is anything after the first occurrence is ignored on the url.



What is the best way to fix this. Thanks to anyone who can help me and answer my question.










share|improve this question

















  • 1





    url:match"//[^/]+/.-(%.[^/]+)"

    – Egor Skriptunoff
    Nov 14 '18 at 19:10






  • 1





    or (%.[^/]*) to allow empty extensions...

    – Paul Kulchenko
    Nov 14 '18 at 19:34











  • @PaulKulchenko - Are filenames like file. valid?

    – Egor Skriptunoff
    Nov 15 '18 at 7:28












  • Are URLs like https://example.com/path/to/file/../file.mp4/file.jpg possible?

    – Egor Skriptunoff
    Nov 15 '18 at 7:31













1












1








1








So i have a url like so



https://example.com/path/to/file/file.mp4/file.jpg


I want to match only the first provided file extension provided not any others people insert into the url.



Example :



function GetFileExtension(url)
return url:match("^.+(%..+)$")
end

local url = "https://example.com/path/to/file/file.mp4/file.jpg"
print(GetFileExtension(url))


Output :



.jpg


The output should be a .mp4 since that is what the file is anything after the first occurrence is ignored on the url.



What is the best way to fix this. Thanks to anyone who can help me and answer my question.










share|improve this question














So i have a url like so



https://example.com/path/to/file/file.mp4/file.jpg


I want to match only the first provided file extension provided not any others people insert into the url.



Example :



function GetFileExtension(url)
return url:match("^.+(%..+)$")
end

local url = "https://example.com/path/to/file/file.mp4/file.jpg"
print(GetFileExtension(url))


Output :



.jpg


The output should be a .mp4 since that is what the file is anything after the first occurrence is ignored on the url.



What is the best way to fix this. Thanks to anyone who can help me and answer my question.







lua






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 18:48









C0nw0nkC0nw0nk

3721214




3721214







  • 1





    url:match"//[^/]+/.-(%.[^/]+)"

    – Egor Skriptunoff
    Nov 14 '18 at 19:10






  • 1





    or (%.[^/]*) to allow empty extensions...

    – Paul Kulchenko
    Nov 14 '18 at 19:34











  • @PaulKulchenko - Are filenames like file. valid?

    – Egor Skriptunoff
    Nov 15 '18 at 7:28












  • Are URLs like https://example.com/path/to/file/../file.mp4/file.jpg possible?

    – Egor Skriptunoff
    Nov 15 '18 at 7:31












  • 1





    url:match"//[^/]+/.-(%.[^/]+)"

    – Egor Skriptunoff
    Nov 14 '18 at 19:10






  • 1





    or (%.[^/]*) to allow empty extensions...

    – Paul Kulchenko
    Nov 14 '18 at 19:34











  • @PaulKulchenko - Are filenames like file. valid?

    – Egor Skriptunoff
    Nov 15 '18 at 7:28












  • Are URLs like https://example.com/path/to/file/../file.mp4/file.jpg possible?

    – Egor Skriptunoff
    Nov 15 '18 at 7:31







1




1





url:match"//[^/]+/.-(%.[^/]+)"

– Egor Skriptunoff
Nov 14 '18 at 19:10





url:match"//[^/]+/.-(%.[^/]+)"

– Egor Skriptunoff
Nov 14 '18 at 19:10




1




1





or (%.[^/]*) to allow empty extensions...

– Paul Kulchenko
Nov 14 '18 at 19:34





or (%.[^/]*) to allow empty extensions...

– Paul Kulchenko
Nov 14 '18 at 19:34













@PaulKulchenko - Are filenames like file. valid?

– Egor Skriptunoff
Nov 15 '18 at 7:28






@PaulKulchenko - Are filenames like file. valid?

– Egor Skriptunoff
Nov 15 '18 at 7:28














Are URLs like https://example.com/path/to/file/../file.mp4/file.jpg possible?

– Egor Skriptunoff
Nov 15 '18 at 7:31





Are URLs like https://example.com/path/to/file/../file.mp4/file.jpg possible?

– Egor Skriptunoff
Nov 15 '18 at 7:31












1 Answer
1






active

oldest

votes


















0














Try url:match("//.-/.+(%..*)$")).



The pattern finds the first / after //, thus skipping the host part. Then it finds the last . and captures it together with the extension, if any.






share|improve this answer






















    Your Answer






    StackExchange.ifUsing("editor", function ()
    StackExchange.using("externalEditor", function ()
    StackExchange.using("snippets", function ()
    StackExchange.snippets.init();
    );
    );
    , "code-snippets");

    StackExchange.ready(function()
    var channelOptions =
    tags: "".split(" "),
    id: "1"
    ;
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function()
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled)
    StackExchange.using("snippets", function()
    createEditor();
    );

    else
    createEditor();

    );

    function createEditor()
    StackExchange.prepareEditor(
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader:
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    ,
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    );



    );













    draft saved

    draft discarded


















    StackExchange.ready(
    function ()
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53306911%2flua-get-file-extension-first-occurrence%23new-answer', 'question_page');

    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    0














    Try url:match("//.-/.+(%..*)$")).



    The pattern finds the first / after //, thus skipping the host part. Then it finds the last . and captures it together with the extension, if any.






    share|improve this answer



























      0














      Try url:match("//.-/.+(%..*)$")).



      The pattern finds the first / after //, thus skipping the host part. Then it finds the last . and captures it together with the extension, if any.






      share|improve this answer

























        0












        0








        0







        Try url:match("//.-/.+(%..*)$")).



        The pattern finds the first / after //, thus skipping the host part. Then it finds the last . and captures it together with the extension, if any.






        share|improve this answer













        Try url:match("//.-/.+(%..*)$")).



        The pattern finds the first / after //, thus skipping the host part. Then it finds the last . and captures it together with the extension, if any.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 15 '18 at 8:59









        lhflhf

        56.2k668104




        56.2k668104





























            draft saved

            draft discarded
















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid


            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.

            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53306911%2flua-get-file-extension-first-occurrence%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Top Tejano songwriter Luis Silva dead of heart attack at 64

            ReactJS Fetched API data displays live - need Data displayed static

            Evgeni Malkin