正则表达式匹配入参为某个值的函数

在源代码文件中,想要搜索出调用了某个指定函数,并且某个入参是某个指定值,比如我有一个函数,函数的原型如下:

PushSchemeInfoMsg( std::string sMsg, int msg_type , int msgID )

我现在想要搜索出所有调用了此函数,并且第二个入参的值是5的所有函数调用,我的正则表达式如下:

find . -name "*.cpp"|xargs grep -e "PushSchemeInfoMsg.*5)"

其中.* 匹配任意字符,也有人提出可以使用[\s\S]* 来匹配任意字符,我在上面的正则表达式中试过使用[\s\S]* 但是结果什么都匹配不上。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 SQL Server 中,可以使用 `LIKE` 运算符结合通配符实现类似正则表达式的匹配。但是,`LIKE` 运算符所使用的通配符只有 `%` 和 `_`,不能完全替代正则表达式。 如果需要使用正则表达式匹配一个字段,可以考虑使用 CLR (Common Language Runtime) 存储过程或函数。CLR 是一种使用 .NET Framework 编写、在 SQL Server 中运行的代码。通过使用 CLR,可以调用 .NET Framework 中的正则表达式库,实现更加灵活的匹配操作。 以下是一个使用 CLR 实现正则表达式匹配的示例: 首先,需要在 SQL Server 中启用 CLR: ```sql EXEC sp_configure 'clr_enabled', 1; RECONFIGURE; ``` 然后,创建一个 CLR 存储过程或函数,其中使用 .NET Framework 的 `System.Text.RegularExpressions` 类库实现正则表达式匹配。例如,下面是一个使用 CLR 实现正则表达式匹配的存储过程: ```csharp using System; using System.Data; using System.Data.SqlClient; using System.Data.SqlTypes; using Microsoft.SqlServer.Server; using System.Text.RegularExpressions; public class RegExMatch { [SqlProcedure] public static void MatchString(SqlString input, SqlString pattern) { // 使用正则表达式匹配 Match match = Regex.Match(input.Value, pattern.Value); // 输出匹配结果 SqlContext.Pipe.Send(match.Success ? match.Value : "No match found."); } } ``` 在上面的代码中,使用 `System.Text.RegularExpressions` 类库中的 `Match` 类完成正则表达式的匹配操作。存储过程接受两个参数:需要匹配的字符串和正则表达式字符串。如果匹配成功,将输出匹配结果;否则输出“No match found.”。 在 SQL Server 中创建 CLR 存储过程的方法很多,可以使用 Visual Studio 创建 CLR 项目,也可以使用 SQL Server Management Studio 中的“新建CLR项目”向导。创建好存储过程后,可以使用以下语句在 SQL Server 中执行: ```sql EXEC RegExMatch 'Hello, world!', 'Hello'; ``` 这个例子会返回 'Hello',因为 'Hello' 匹配了 'Hello, world!' 中的 'Hello'。 需要注意的是,CLR 存储过程需要在 SQL Server 中启用 CLR 并设置安全级别。如果 CLR 存储过程使用了外部程序集或访问了网络资源,还需要将这些资源添加到 SQL Server 的白名单中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值