2016-03-10 2 views
1

Я пытаюсь проверить регулярное выражение с помощью c, но я не знаю много о регулярном выражении в c и может только создать шаблон в Python.C эквивалент регулярного выражения Python

шаблон будет: STRING1.*?STRING2(STRING3)?STRING4

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

Есть некоторые библиотеки, я думаю, но я стараюсь избегать этого (не может сказать, почему. Просто знает, что есть не-программное обеспечение причина этого)

Будет ли это работать с strstr?

+1

В C нет стандартной библиотеки для сопоставления шаблонов, хотя, конечно, вы можете получить ее для разных платформ. – dasblinkenlight

+1

C не имеет встроенной поддержки регулярных выражений. Вам нужно будет использовать библиотеку, если вы хотите придерживаться C. C++ имеет регулярные выражения. Это может быть полезно. – abelenky

+0

POSIX имеет библиотеку regex, но '*?' Не поддерживается POSIX –

ответ

1

Существует библиотека posix для регулярного выражения в C, которая может вас заинтересовать. Ответ на этот вопрос может помочь

https://stackoverflow.com/questions/35887492/linux-c-replace-string-in-accordance-with-a-matching-rulesuch-as-any/35897946#35897946

идти также через этот пример использования библиотеки Posix

Posix regex example

Другие, чем это я не думаю, что есть что-то лучше доступно. По крайней мере, я не знаю

+0

Вы можете улучшить свой ответ, включив важные части второй ссылки, уменьшив риск связывания с гниением. –

+0

Спасибо за отзыв – Sharad

1

Можно использовать общедоступный POSIX regexes, но регулярные выражения POSIX существенно отличаются от большинства других реализаций, таких как Python, и будут отсутствовать во многих современных функциях.

В C и многих других языках обычно используется некоторая реализация PCRE or Perl Compatible Regular Expressions. Это будет ближе к тому, что ожидается разработчиком Python. Он доступен как его собственная библиотека C, или как part of a larger C library such as Gnome Lib.

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