Regex for splitting a string using space when not surrounded by single or double quotes

后端 未结 15 2374
梦毁少年i
梦毁少年i 2020-11-22 03:15

I\'m new to regular expressions and would appreciate your help. I\'m trying to put together an expression that will split the example string using all spaces that are not s

15条回答
  •  迷失自我
    2020-11-22 03:45

    It'll probably be easier to search the string, grabbing each part, vs. split it.

    Reason being, you can have it split at the spaces before and after "will be". But, I can't think of any way to specify ignoring the space between inside a split.

    (not actual Java)

    string = "This is a string that \"will be\" highlighted when your 'regular expression' matches something.";
    
    regex = "\"(\\\"|(?!\\\").)+\"|[^ ]+"; // search for a quoted or non-spaced group
    final = new Array();
    
    while (string.length > 0) {
        string = string.trim();
        if (Regex(regex).test(string)) {
            final.push(Regex(regex).match(string)[0]);
            string = string.replace(regex, ""); // progress to next "word"
        }
    }
    

    Also, capturing single quotes could lead to issues:

    "Foo's Bar 'n Grill"
    
    //=>
    
    "Foo"
    "s Bar "
    "n"
    "Grill"
    

提交回复
热议问题