выполнение регулярного выражения в C - PullRequest
0 голосов
/ 20 ноября 2010

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

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

Программа должна выводить как:

   implies(maincity(y),x))

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

1 Ответ

4 голосов
/ 20 ноября 2010

Для преобразования входной строки 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))"
  • Возвращает второй аргумент термина в круглых скобках, за которым следует дополнительная закрывающая скобка

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...