我将使用什么代码即时将类似SQL的表达式转换为正则表达式?

时间:2020-03-05 18:48:34  来源:igfitidea点击:

我正在寻找即时将类似SQL的语句转换为等效的正则表达式,即

LIKE '%this%'
LIKE 'Sm_th'
LIKE '[C-P]arsen'

最好的方法是什么?

P.S.我正在寻找在.Net Framework(C#)上执行此操作。

解决方案

回答

我找到了一个名为Regexp :: Wildcards的Perl模块。我们可以尝试将其移植或者尝试Perl.NET。我觉得你也可以自己写点东西。

回答

从上面的示例中,我将这样攻击它(我之所以这么说是因为我不了解C#):

像" ..."一样将其分开,将...碎片放入一个数组中。
用。*代替未转义的百分号,用。下划线,在这种情况下,[C-P] arsen直接转换为正则表达式。

用管道将阵列块重新连接在一起,并将结果包装在括号和标准正则表达式位中。

结果将是:

/^(.*this.*|Sm.th|[C-P]arsen)$/

这里最重要的是要警惕可以转义数据的所有方式,以及哪些通配符会转换为哪些正则表达式。

% becomes .*
_ becomes .