Регулярные выражения в C

authoritativeCopy устанавливается DocuSign. Вы не можете установить его через API.

После того, как вы захотите загрузить достоверную копию из DocuSign, конверт покажет authoritativeCopy == false.

EnforceSignerVisibility отличается. Это должно быть сначала включено на уровне учетной записи. См. Экран инструмента администратора Настройки отправки и настройки видимости документа. Вам необходимо установить флажок Allow sender to specify document visibility

5
задан Scott 7 April 2009 в 13:14
поделиться

7 ответов

Мм... Лучший способ к

#include <regex.h>

Это - стандарт POSIX API для регулярных выражений.

Для систем неPOSIX, прокручивая Ваше собственное одна альтернатива, основной regex механизм не слишком труден для выполнения. Я уверен, что существуют стандартные решения также, у меня нет neded один.

Задумайтесь о нем, я думаю бойкий, имеет тот.

13
ответ дан 18 December 2019 в 05:44
поделиться

В зависимости от того, какой диалект Вы ищете и какая платформа Вы идете:

  • Регулярные выражения POSIX, вероятно, будут в стандартной библиотеке для C - см. <regex.h> и regcomp, regerror, regexec, regfree.
  • libPCRE обеспечивает большинство расширенных regex функций perl
  • бойкий имеет GRegex
  • Библиотека Tcl Regex Henry Spencer.

Henry Spencer также сделал другую regex библиотеку, пользовавшуюся текущими версиями TCL и PostgreSQL. Этот интересен, потому что это - гибридная реализация NFA/DFA.

Regexes, которые принимают ту же строку несколько путей (как a*a?) по сути требуют NFA. Обычная реализация моделирует NFA как DFA, использующий отслеживание в обратном порядке, которое может быть так же как O (2^length (вход)) для особенно вырожденного шаблона. Но, простая рекурсивная реализация может быть расширена с помощью получения, обратных ссылок, обратные вызовы для кодирования, и все обычные "дополнительные" функции, которые много языков предлагают помимо тестирования на соответствия.

Подход "NFA" отслеживает несколько текущих состояний и обновляет всех их с каждым входящим символом (См. рецензию Ross Cox Thompson NFA regexes для большего количества объяснения). Этот подход является O (вход length*pattern.length), который быстрее - очень так в худших случаях - но не может выполнить backrefs или получения, так как он не отслеживает то, как это добралось до состояния.

Подход Spencer является гибридом, компилируя некоторые части шаблона к подходу NFA, и с помощью отслеживания в обратном порядке только там, где это необходимо для получений, которые на самом деле требовали. Это часто - существенная победа (см. положение TCL в перестрелке regex-ДНК).

11
ответ дан 18 December 2019 в 05:44
поделиться

Посмотрите это: http://www.pcre.org/

Это - ОЧЕНЬ хороший lib!

3
ответ дан 18 December 2019 в 05:44
поделиться

Совершенно другой подход должен попробовать Грамматику, разбирающую выражение (PEG). ШТЕПСЕЛЬ прибывает в проблему сопоставления с образцом с точки зрения синтаксического анализатора и может даже использовать в своих интересах несколько правил, которые формируют полную грамматику. Это позволяет записать выражения, которые соответствуют сбалансированной круглой скобке, которые иначе довольно трудно выразить на большинстве regexp диалектов.

Хотя ШТЕПСЕЛИ являются относительно новыми, должно быть несколько реализаций там, которые применимы от C.

Реализация ШТЕПСЕЛЯ, которую я лично использовал, является LPeg. Это аккуратно связывается с Lua и по совпадению было записано одним из принципиальных авторов Lua, Roberto Ierusalimschy. Это обеспечивает полную реализацию ШТЕПСЕЛЯ и также включает адаптер, который переводит regexp в эквивалентный ШТЕПСЕЛЬ для выполнения.

Соединение ядра Lua к программе C только для получения доступа к LPeg могло бы походить на излишество, но действительно не было бы настолько трудно сделать, даже если бы у Вас не было плана использовать Lua для других целей.

1
ответ дан 18 December 2019 в 05:44
поделиться

Возможно, эта статья поможет? Это показывает Вам, как использовать regex функции, определяемые в regex.h.

Да, разве posix не regex просто замечателен, у них есть все это, таким образом, я задался вопросом, почему они не в C? Ну, я нашел ответ, и я стал счастливым, они там, и вот то, как использовать их

0
ответ дан 18 December 2019 в 05:44
поделиться
0
ответ дан 18 December 2019 в 05:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: