Узлы MySQL NDB Cluster со случайно сгенерированным именем хоста / IP

Попробуйте:

public class Main { 
    public static void main(String[] args) {
        String line = "foo,bar,c;qual=\"baz,blurb\",d;junk=\"quux,syzygy\"";
        String[] tokens = line.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", -1);
        for(String t : tokens) {
            System.out.println("> "+t);
        }
    }
}

Вывод:

> foo
> bar
> c;qual="baz,blurb"
> d;junk="quux,syzygy"

Другими словами: разбивается на запятую только в том случае, если эта запятая имеет нуль или четное число кавычки перед ним .

Или немного дружелюбнее для глаз:

public class Main { 
    public static void main(String[] args) {
        String line = "foo,bar,c;qual=\"baz,blurb\",d;junk=\"quux,syzygy\"";

        String otherThanQuote = " [^\"] ";
        String quotedString = String.format(" \" %s* \" ", otherThanQuote);
        String regex = String.format("(?x) "+ // enable comments, ignore white spaces
                ",                         "+ // match a comma
                "(?=                       "+ // start positive look ahead
                "  (?:                     "+ //   start non-capturing group 1
                "    %s*                   "+ //     match 'otherThanQuote' zero or more times
                "    %s                    "+ //     match 'quotedString'
                "  )*                      "+ //   end group 1 and repeat it zero or more times
                "  %s*                     "+ //   match 'otherThanQuote'
                "  $                       "+ // match the end of the string
                ")                         ", // stop positive look ahead
                otherThanQuote, quotedString, otherThanQuote);

        String[] tokens = line.split(regex, -1);
        for(String t : tokens) {
            System.out.println("> "+t);
        }
    }
}

, который производит то же, что и в первом примере.

EDIT

Как упоминалось @MikeFHay в комментариях:

Я предпочитаю использовать Splitter Guava , так как он имеет более низкие значения по умолчанию (см. Обсуждение выше о пустых совпадениях, обрезанных String#split(), поэтому я сделал:

Splitter.on(Pattern.compile(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"))

0
задан Irfy 11 February 2019 в 22:10
поделиться

1 ответ

Я думаю, что это может быть достигнуто с помощью сценариев вместе с gcloud SDK , gcloud позволяет запускать ресурсы в GCP, также есть много опций / флагов, которые могут быть полезны для установки необходимых вам конфигураций. .

Надеюсь, это поможет.

0
ответ дан Adad O. 11 February 2019 в 22:10
поделиться