Собственно, допустим, у меня есть строка, она может состоять из совершенно любых символов, но, например, знаки препинания должны быть именно в кавычках. Как мне осуществить такую проверку?
а если у меня допустим какой то из символов не попадает в эти кавычки, как вернуть ошибку? То что вы написали - не совсем понятно.Разве такой "регуляркой" описываются все знаки препинания?
нет, такой регуляркой описываются любые символы, заключенные в кавычки. Вы можете сначала посчитать все знаки препинания, а затем посчитать количество знаков препинания в кавычках и сравнить. Регулярку только чуть-чуть нужно переделать
Срабатывает если кавычек четное количество (кавычки сбалансированы) и между нечетной (открывающей) и четной (закрывающей) кавычкой есть знаки препинания. В примере знаки препинания только точка и запятая (в центре регулярки) но можете дополнить своими.
Чтобы научиться писать регулярки, нужно немного расширить сознание :-), а потом сформулировать задачу в терминах последовательностей символов.
В данном случае:
1. Любые символ кроме ковычки
2. Открывающая ковычка, любые символы кроме ковычки закрывающая ковычка, любые символы кроме ковычки. Пункт 2 повторяется сколько угодно раз
3. Открывающая ковычка, любые символы кроме ковычки, знак препинания, любые символы кроме ковычки, закрывающая ковычка. Это наша целевая группа
4. Повторение пункта 2 сколько угодно раз.
Хитрость вся в том, как искать только между открывающей и закрывающей ковычкой. Этот вопрос решает использование группы 2 из пункта два, которая учитывает ковычки только парами.
@itforge почему? Если нормально прокомментировать, то все понятно будет.