在C++buider中使用正则表达式

本文介绍了一种使用正则表达式验证数字的方法,确保数字不超过三位小数,并提供了具体的C++实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

下面是我在一个函数中验证是否是一个最多3位小数的数字的正则表达式实例

 

//添加头文件#include <pcre.h>

//入参:正则,要进行匹配的文本

bool _fastcall TDataModule1::RegEXMatch(char * strRegEX,char * strText)
 {


    const char      *pszErr;
    int             nErrOffset;
    pcre *re = pcre_compile(strRegEX,0,&pszErr,&nErrOffset,NULL);      // 先准备表达式
    if(re==NULL)
    {
        //printf("compile error at:%d, %s", nErrOffset, pszErr);
        return false ;
    }

    int ovector[30];    // 数量由szReg决定,
    int len = strlen(strText);
    int rc = pcre_exec(re, NULL, strText, len, 0, ovector, 30);   // 执行匹配

    free(re);
    if(rc != -1)
    {
       return true;

    }else
    {
       return false;
    }

 }

//这个不好用

bool isPrice(AnsiString strPrice)
 {
      #define   PG   OlePropertyGet
      #define   PS   OlePropertySet
      #define   FN   OleFunction
      #define   PR   OleProcedure

      Variant Axl = Variant::CreateObject("VBScript.RegExp"); //利用脚本里的正则
      Axl.PS("Global", true);//全局匹配
      Axl.PS("Pattern", "^[0-9]+(.[0-9]{0,3})?$");  //写入正则表达式
      Variant rtn = Axl.FN("Execute", strPrice.c_str());//开始执行
      AnsiString str = "";
      for (int i=0; i != rtn.PG("Count"); i++)
      {
       str = ((rtn.PG("Item",i).PG("Value")));//取出匹配的东东
      }
      if(str.IsEmpty())
      {
        return false;
      }else
      {
        return true;
      }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值