Python 3 MySQL sql синтаксическая ошибка в отформатированной строке

Если вы беспокоитесь об осложнениях, которые могут возникнуть в будущем, посмотрите, хотите ли вы использовать метод рок-сплошной утилиты, который может справиться с любым шаблоном токена и любым , которые вы бросаете на него. (Вероятно, это так!) [/ ​​G2]

NB удивлен, обнаружив, что люди Apache Commons, похоже, не предоставили это, например. в StringUtils.

Также я предлагаю, чтобы это было флагом в Pattern: i..e INCLUDE_SEPARATORS.

Но это довольно просто, если вы используете Pattern и Matcher справа:

    // NB could be a different spec for identifying tokens, of course!
    Pattern sepAndTokenPattern = Pattern.compile("(.*?)(\\w+)");
    Matcher matcher = sepAndTokenPattern.matcher( stringForTokenising );
    List<String> tokenAndSeparatorList = new ArrayList<String>();

    // for most processing purposes you are going to want to know whether your 
    // combined list of tokens and separators begins with a token or separator        
    boolean startsWithToken = true;
    int matchEnd = -1;
    while (matcher.find()) {
        String preSep = matcher.group(1);
        if (!preSep.isEmpty()) {
            if( tokenAndSeparatorList.isEmpty() ){
                startsWithToken = false;
            }
            // in implementation you wouldn't want these | characters, of course 
            tokenAndSeparatorList.add("|" + preSep + "|"); // add sep
        }
        tokenAndSeparatorList.add("|" + matcher.group(2) + "|"); // add token
        matchEnd = matcher.end();
    }
    // get trailing separator, if there is one:
    if( matchEnd != -1 ){
        String trailingSep = stringForTokenising.substring( matchEnd );
        if( ! trailingSep.isEmpty() ){
            tokenAndSeparatorList.add( "|" + trailingSep + "|" );
        }
    }

    System.out.println(String.format("# starts with token? %b - matchList %s", startsWithToken, tokenAndSeparatorList));
0
задан LegitShellAccount 18 January 2019 в 13:05
поделиться