2009-03-09 2 views
2

У меня есть входной строки в моей программе формы:..Использование SED эквивалент в программе C

кон * .cc

Я хочу это представлять регулярное выражение, CON * куб.см.

Как это сделать в программе на C? Есть ли что-то вроде sed, которое я могу использовать?

+0

Непонятно, что вы ищете. Вы хотите, чтобы ваша программа C обрабатывала регулярные выражения? Какая-то библиотека регулярных выражений? BTW, ваше регулярное выражение неверно. вам нужно уйти от второго ». – Trent

ответ

4

Я предполагаю, что вы действительно просто хотите globbing, а не полный текст на регулярных выражениях. Если вы работаете под Linux, вы можете использовать функцию glob. Я предполагаю, что есть более переносимый способ сделать это, но я не знаю одного из них.

2

Вы можете использовать PCRE для соответствия регулярным выражениям. Фактическое выражение может быть сохранено как массив символов (как и любая другая строка).

1

Что именно вы хотели бы сделать с этим регулярным выражением? Предполагая, что вы захотите выполнить поиск по набору строк, которые у вас уже есть в коде, вам нужно будет использовать библиотеку регулярных выражений. C не поддерживает регулярные выражения изначально. Посмотрите руководство gcc - here.

0

Использование СЭД из вашей программы:

  1. вилка()
  2. набора стандартного ввода/STDOUT в дочернем процессе
  3. Exec (SED s/X/Y /) у ребенка (или что-то операцию вы хотите)
  4. родитель толкает данных в СЭД, считывает данные с SED
  5. родителя пожинает СЭД, когда сделано
1

This page < описывает regex.h> заголовок, который реализует POSIX поддержка регулярных выражений для C. Для того, чтобы использовать эту функцию, вы просто делаете:

#include <sys/types.h> 
#include <regex.h> 

Они довольно легко и приятно работать, но, как @ Чикенча сказал в другом ответе, похоже, что вы просто замаскировали имена файлов, не выполняли правильное соответствие регулярному выражению. Просто подумал, что я бы сказал, что C действительно поддерживает регулярные выражения, так как никто не имел.

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