我在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)+
答案 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);
希望这有帮助。