2010-11-20 2 views
0

Я хотел бы выполнить регулярное выражение в C. Предположим, я следующий текст как:Выполнение регулярного выражения в C

thecapital([x], implies(maincity(y),x)) 

Программа должна выход как:

implies(maincity(y),x)) 

может кто-нибудь предложить, пожалуйста, как мне поступить?

+2

См. Http://stackoverflow.com/questions/725630/regular-expressions-in-c – gimel

+0

Уверен, что вам нужно использовать регулярные выражения? Почему бы не использовать strtok(), чтобы разбить строку на «,»? – helpermethod

+0

Что произойдет, если два «х» не совпадают? –

ответ

4

Для преобразования строки ввода thecapital([x], implies(maincity(y),x)) в выходную строку implies(maincity(y),x)) вы можете использовать следующую простую функцию:

const char * 
transform(const char *expr) { 
    return expr + 16; 
} 

Он не использует регулярные выражения, но с другой стороны, это молниеносно. Или, может быть, вы не поставили свой вопрос четко. Например, вы не описали словами, какое преобразование должно быть сделано. Давать только один пример недостаточно.

Итак, что вы действительно хотите сделать :?

  • Пропустить первые 16 символов входной строки
  • Возврат все после первого символа пробела
  • Возвращения все после последнего символа пробела
  • возвращенного суффикса аргумента, начиная со вторым i
  • Возврат "implies(maincity(y),x))"
  • Возврат второго аргумента к термину в круглых скобках, за которым следует дополнительная закрывающая скобка

Для вашего примера моя простая предлагаемая функция выполняет все эти требования. Но, конечно, это будет неудачно безнадежно, если дать какой-либо другой вклад.

Смежные вопросы