1

在我的应用程序中,我允许用户使用租船者创建一些验证规则'*''?'其中'*'意味着许多租船者并且'?'意味着一个字符,例如用户可以写"*Ma?s*"所以它应该匹配这样的东西"ajdg adbf MaKs sjklfd"对不起这个例子但我什么都没有想到,也许用户输入更复杂的规则。

我通过将规则和匹配字符串发送到 SQL Server 数据库来解决问题,并将每个替换'*''%'和每个'?'替换'_'并使用类似条件并且效果很好,但是用户可以输入很多验证规则和很多匹配项,所以有是很多数据库操作,所以我想我晚上使用新的 c++ 11 正则表达式在客户端执行此操作,我搜索了很多并阅读了很多文章但没有答案。

那么这可以在正则表达式中完成吗?如何 ?

4

2 回答 2

2

如果要创建正则表达式,只需将规范转换为正则表达式。为此,只需替换:

  • *by .*(或.+,取决于您是否需要至少一个字符)
  • ?经过.

笔记:

.匹配任何字符。如果您只查找字母,则可以使用 replace .by [a-zA-Z]。对于数字,\d. 对于字母和数字[a-zA-Z0-9]等。

于 2013-02-26T09:38:44.773 回答
1

*您可以通过替换为.*?来做到这一点.。但是请注意,<regex>我遇到的大多数 C++ 实现都没有真正的功能,所以暂时你需要依赖Boost.regex.

顺便说一句,请注意,您需要先清理用户输入。否则,恶意用户可能会对您的系统做非常糟糕的事情。

于 2013-02-26T09:41:19.240 回答