Добавить пользовательские данные в пользовательскую таблицу при обновлении продукта

Вы можете попробовать это регулярное выражение:

str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)");

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

Объяснение:

,           // Split on comma
(?=         // Followed by
   (?:      // Start a non-capture group
     [^"]*  // 0 or more non-quote characters
     "      // 1 quote
     [^"]*  // 0 or more non-quote characters
     "      // 1 quote
   )*       // 0 or more repetition of non-capture group (multiple of 2 quotes will be even)
   [^"]*    // Finally 0 or more non-quotes
   $        // Till the end  (This is necessary, else every comma will satisfy the condition)
)

Вы даже можете ввести такой код в своем коде, используя модификатор (?x) с вашим регулярным выражением. Модификатор игнорирует любые пробелы в вашем регулярном выражении, поэтому становится легче читать регулярное выражение, разбитое на несколько строк:

String[] arr = str.split("(?x)   " + 
                     ",          " +   // Split on comma
                     "(?=        " +   // Followed by
                     "  (?:      " +   // Start a non-capture group
                     "    [^\"]* " +   // 0 or more non-quote characters
                     "    \"     " +   // 1 quote
                     "    [^\"]* " +   // 0 or more non-quote characters
                     "    \"     " +   // 1 quote
                     "  )*       " +   // 0 or more repetition of non-capture group (multiple of 2 quotes will be even)
                     "  [^\"]*   " +   // Finally 0 or more non-quotes
                     "  $        " +   // Till the end  (This is necessary, else every comma will satisfy the condition)
                     ")          "     // End look-ahead
                         );
0
задан barbsan 17 January 2019 в 09:46
поделиться