生活随笔
收集整理的這篇文章主要介紹了
PCRE 简介
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
介紹
PCRE (Perl Compatible Regular Expressions) 是一個用C語言編寫的正則表達式函數庫。本文簡要介紹PCRE的編譯和使用方法。
編譯
從PCRE官網下載后,解壓(本人下的版本為pcre2-10.21)。仔細閱讀 README 和 NON-AUTOTOOLS-BUILD,里面介紹了很多編譯的方法。由于本人需要在VS下開發,因此選擇CMake編譯。
1. 打開 VS開發人員命令提示符,切換到CMake\bin\下,運行cmake-gui.exe
2. 設置源文件目錄為PCRE的解壓目錄。
3. 在PCRE的解壓目錄下創建build文件夾,將該文件夾設置為編譯目錄。
4. 點擊Configure按鈕,會彈出選擇編譯器的提示框,選擇VS編譯器的版本,點擊Finish按鈕。
5. 配置成功后,會在配置列表中顯示所有的配置項,這里按照實際需要修改。本人只修改了CMAKE_INSTALL_PREFIX,即安裝目錄,其他保持默認。若修改了配置項,則需要重新點擊Configure以使之生效。
6. 點擊Generate按鈕,成功后會在build下生成所需要的VS工程文件和解決方案文件。
7. VS打開解決方案文件,解決方案配置為Release版本,編譯工程ALL_BUILD,則會在build\Release下生成庫文件。
8. 編譯工程INSTALL,則會在CMAKE_INSTALL_PREFIX指定的目錄下生成頭文件、庫文件和相應的手冊。在share\doc下面會生成html形式的API說明文檔。
使用
- 建立工程的時候需要配置字符長度,例如定義宏 PCRE2_CODE_UNIT_WIDTH=8
- 如果使用靜態庫,需要定義宏 PCRE2_STATIC
- 這里僅列出簡單的使用說明,具體的API使用方法詳見API說明文檔。
#include "pcre2.h"
#include <string>
#include <iostream>int main(
void)
{
const std::
string pattern{
"\\d{3,5}" };
int error_code =
0;PCRE2_SIZE error_offset =
0;pcre2_code *code = pcre2_compile(
reinterpret_cast<PCRE2_SPTR>(pattern.c_str()), PCRE2_ZERO_TERMINATED,
0, &error_code, &error_offset, NULL);
if (code == NULL){
return -
1;}
const std::
string subject{
"tel1:1234;tel2:3456;tel3:5678" };pcre2_match_data *match_data = pcre2_match_data_create_from_pattern(code, NULL);
int rc =
0;
int start_offset =
0;
unsigned int match_index =
0;
while ((rc = pcre2_match(code,
reinterpret_cast<PCRE2_SPTR>(subject.c_str()), subject.length(), start_offset,
0, match_data, NULL)) >
0){PCRE2_SIZE *ovector = pcre2_get_ovector_pointer(match_data);
int i =
0;
for (i =
0; i < rc; i++){
std::
cout <<
"match " << ++match_index <<
": "<<
std::
string(subject.c_str() + ovector[
2*i], ovector[
2*i +
1] - ovector[
2*i]) <<
std::endl;}start_offset = ovector[
2*(i-
1) +
1];}
return 0;
}
總結
以上是生活随笔為你收集整理的PCRE 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。