忽略正则表达式的情况

时间:2009-10-09 12:59:34

标签: .net regex sql-server-2005 clr

我在SQL Server 2005数据库中创建了一个CLR。它是一个简单的正则表达式用户定义函数,它将检查我传递给函数的字符串中是否存在模式。

我在CLR中使用的点网络代码如下所示:

Return System.Text.RegularExpressions.Regex.IsMatch("Input", "pattern")

如果找到匹配项,则返回位值1。

我使用的模式是

 +(Create|Alter) +(Proc|Procedure) +

我想要做的是找到“创建或改变”“过程或过程”的任何情况,无论情况如何。如何让表达式忽略大小写?

我试过了

/ +(Create|Alter) +(Proc|Procedure) +/i 

但这不起作用。

编辑:我在互联网上环顾四周并使用了各种建议。其中没有一个有效或我做错了。如果有人可以给我一个模式,将忽略该案件,将非常感谢!

答案: 我想要实现的是一个忽略大小写的正则表达式。 Dot Net确实有传入的参数来设置忽略大小写然而它在CLR中意味着我没有能力将参数传递给函数。

实现此目的的模式是:(?i)+(创建|修改)+(Proc | Procedure)+

3 个答案:

答案 0 :(得分:3)

您可以使用内联的“不区分大小写”修饰符(?i)

(?i) +(Create|Alter) +(Proc|Procedure) +

答案 1 :(得分:3)

试试这个。

Return System.Text.RegularExpressions.Regex.IsMatch("input", @".*(Create|Alter).+(Proc|Procedure).+", RegexOptions.IgnoreCase);

我建议安装免费软件Expresso来测试你的正则表达式并生成.Net / c#代码用于搜索,替换等

答案 2 :(得分:2)

尝试使用:

Regex regex = new Regex(
    regexStringHere,
    RegexOptions.IgnoreCase);

return regex.IsMatch(inputStringHere);

希望这有帮助。