Даже если ваш вопрос помечен regex
, , регулярное выражение не является правильным решением .
Что вы, вероятно, хотите сделать, это написать простой автомат с нажатием .
Вот действительно простой пример:
char* strip_parens(char* string) {
int len = strlen(string);
char* result = malloc(len + 1);
int num_parens = 0;
int i = 0, j = 0;
for(; i < len; i++) {
char c = string[i];
if(c == '(') {
num_parens++;
} else if(c == ')' && num_parens > 0) {
num_parens--;
} else if(num_parens == 0) {
result[j] = c;
j++;
}
}
result[j] = '\0';
return result;
}
Я даже не уверен, что это квалифицируется как автомат с нажатием кнопки, потому что он использует простой счетчик, а не стек, но концепция похожа.
Это только скобки, но оно должно быть достаточно простым, чтобы продемонстрировать технику.