Захват строки в кавычках в строке, разделенной запятыми, с использованием регулярного выражения

Я пытаюсь сопоставить всю строку с двойными кавычками, разделенными запятой Например, в строке образца

"COUNT","count(1)","crmuser.accounts"

я хочу соответствовать

COUNT
count(1)
crmuser.accounts

Регулярное выражение (?< = ").*?(? = ") также соответствует разделителю-запятой, который не требуется. Как я могу исключить запятые в строке.

Может ли быть запятая между двойными кавычками?

The fourth bird 20.03.2019 18:12

да запятая может стоять в двойных кавычках

Rejith Krishnan 20.03.2019 18:15

Вы можете использовать группу захвата вместо поиска "(.*?)"демо Поскольку утверждения не используют символ, они также действительны для "," соответствия запятой.

The fourth bird 20.03.2019 18:16

Но "(.*?)" включит " в матч, чего мне не нужно. Мне просто нужна строка внутри двойных кавычек.

Rejith Krishnan 20.03.2019 18:22

Он будет соответствовать ему, но ваше значение находится в группе захвата (которая имеет зеленый цвет) regex101.com/r/uzzGVF/1

The fourth bird 20.03.2019 18:23
...is matching the comma seperator as well нет, это не так. Это не соответствует этим запятым.
revo 20.03.2019 18:30

Или используйте "([^"]+)", чтобы захватить группу, соответствующую не двойной кавычке.

The fourth bird 20.03.2019 18:30
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
205
2

Ответы 2

Есть несколько различных обходных путей, которые вы можете использовать для этого; например, используя группы захвата, как предложено в комментариях Четвертой птицы. Но лично я стараюсь избегать использования .*.

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

(?< = ")[\w\(\)\.,]{2,}(? = ")

Демо

Вам не нужно избегать круглых скобок и точек в классе символов. \w также соответствует \d, поэтому я думаю, вы могли бы написать это как [\w().] Как упомянул OP, также может присутствовать запятая, вы также можете использовать [\w().,]

The fourth bird 20.03.2019 18:26

@Thefourthbird Вам не обязательно, но я не уверен в том, что принято, а что нет во всех парсерах регулярных выражений, поэтому я вставил их на всякий случай. И да, я уже упоминал запятую.

Chris 20.03.2019 18:27

Для этого формата строки вы можете просто использовать:

var str = '"COUNT","count(1)","crmuser.accounts"' ;
var separated = str.split('","') ;
for(var i in separated){
     i.replace('"','') ;
} ;

Я хотел регулярное выражение для того же самого, а не программу. Спасибо за ответ в любом случае.

Rejith Krishnan 20.03.2019 19:58

Другие вопросы по теме