資源簡介
perl語言兼容正則表達式)是一個用C語言編寫的正則表達式函數庫,由菲利普.海澤(Philip Hazel)編寫。PCRE是一個輕量級的函數庫,比Boost之類的正則表達式庫小得多。PCRE十分易用,同時功能也很強大,性能超過了POSIX正則表達式庫和一些經典的正則表達式庫 [1] 。
和Boost正則表達式庫的比較顯示 [2] ,雙方的性能相差無幾,PCRE在匹配簡單字符串時更快,Boost則在匹配較長字符串時勝出---但兩者差距很小,考慮到PCRE的大小和易用性,我們可以認為PCRE更值得考慮。
PCRE被廣泛使用在許多開源軟件之中,最著名的莫過于Apache HTTP服務器和PHP腳本語言、R腳本語言,此外,正如從其名字所能看到的,PCRE也是perl語言的缺省正則庫。
PCRE是用C語言實現的,其C++實現版本是PCRE++。
代碼片段和文件信息
/*************************************************
*??????Perl-Compatible?Regular?expressions???????*
*************************************************/
/*?PCRE?is?a?library?of?functions?to?support?regular?expressions?whose?syntax
and?semantics?are?as?close?as?possible?to?those?of?the?Perl?5?language.
???????????????????????Written?by?Philip?Hazel
???????????Copyright?(c)?1997-2012?University?of?Cambridge
-----------------------------------------------------------------------------
Redistribution?and?use?in?source?and?binary?forms?with?or?without
modification?are?permitted?provided?that?the?following?conditions?are?met:
????*?Redistributions?of?source?code?must?retain?the?above?copyright?notice
??????this?list?of?conditions?and?the?following?disclaimer.
????*?Redistributions?in?binary?form?must?reproduce?the?above?copyright
??????notice?this?list?of?conditions?and?the?following?disclaimer?in?the
??????documentation?and/or?other?materials?provided?with?the?distribution.
????*?Neither?the?name?of?the?University?of?Cambridge?nor?the?names?of?its
??????contributors?may?be?used?to?endorse?or?promote?products?derived?from
??????this?software?without?specific?prior?written?permission.
THIS?SOFTWARE?IS?PROVIDED?BY?THE?COPYRIGHT?HOLDERS?AND?CONTRIBUTORS?“AS?IS“
AND?ANY?EXPRESS?OR?IMPLIED?WARRANTIES?INCLUDING?BUT?NOT?LIMITED?TO?THE
IMPLIED?WARRANTIES?OF?MERCHANTABILITY?AND?FITNESS?FOR?A?PARTICULAR?PURPOSE
ARE?DISCLAIMED.?IN?NO?EVENT?SHALL?THE?COPYRIGHT?OWNER?OR?CONTRIBUTORS?BE
LIABLE?FOR?ANY?DIRECT?INDIRECT?INCIDENTAL?SPECIAL?EXEMPLARY?OR
CONSEQUENTIAL?DAMAGES?(INCLUDING?BUT?NOT?LIMITED?TO?PROCUREMENT?OF
SUBSTITUTE?GOODS?OR?SERVICES;?LOSS?OF?USE?DATA?OR?PROFITS;?OR?BUSINESS
INTERRUPTION)?HOWEVER?CAUSED?AND?ON?ANY?THEORY?OF?LIABILITY?WHETHER?IN
CONTRACT?STRICT?LIABILITY?OR?TORT?(INCLUDING?NEGLIGENCE?OR?OTHERWISE)
ARISING?IN?ANY?WAY?OUT?OF?THE?USE?OF?THIS?SOFTWARE?EVEN?IF?ADVISED?OF?THE
POSSIBILITY?OF?SUCH?DAMAGE.
-----------------------------------------------------------------------------
*/
/*?This?is?a?freestanding?support?program?to?generate?a?file?containing
character?tables?for?PCRE.?The?tables?are?built?according?to?the?current
locale.?Now?that?pcre_maketables?is?a?function?visible?to?the?outside?world?we
make?use?of?its?code?from?here?in?order?to?be?consistent.?*/
#ifdef?HAVE_CONFIG_H
#include?“config.h“
#endif
#include?
#include?
#include?
#include?
#include?“pcre_internal.h“
#define?DFTABLES??????????/*?pcre_maketables.c?notices?this?*/
#include?“pcre_maketables.c“
int?main(int?argc?char?**argv)
{
FILE?*f;
int?i?=?1;
const?unsigned?char?*tables;
const?unsigned?char?*base_of_tables;
/*?By?default?the?default?C?locale?is?used?rather?than?what?the?building?user
happens?to?have?set.?However?if?the?-L?option?is?given?set?the?locale?from
the?LC_xxx?environment?variables.?*/
if?(argc?>?1?&&?strcmp(argv[1]?“-L“)?==?0)
??{
??setlocale(LC_ALL?““);????????/*?Set?from?environmen
評論
共有 條評論