在我的应用程序中,我允许用户使用租船人'*'
,'?'
创建一些验证规则,其中'*'
表示许多租船人,'?'
表示一个字符,例如用户可以写"*Ma?s*"
所以它应该匹配这样的"ajdg adbf MaKs sjklfd"
对不起这个例子,但我没有任何想法,也许用户输入更复杂的规则。
我通过将规则和匹配字符串发送到SQL Server数据库并将每个'*'
替换为'%'
并将每个'?'
替换为'_'
来解决问题并使用类似条件并且工作得很好,但是有很多用户可以输入的验证规则和很多匹配,所以有很多数据库操作,所以我想我晚上使用新的c ++ 11正则表达式来做客户端,我搜索很多,阅读了很多文章,但没有答案。
这可以在正则表达式中完成吗?怎么样?
答案 0 :(得分:2)
如果要创建正则表达式,只需将规范转换为正则表达式即可。为此,只需替换:
*
.*
(或.+
,具体取决于您是否至少需要一个角色)
?
.
注意:强>
.
匹配任何字符。如果您只是在寻找信件,可以使用.
替换[a-zA-Z]
。对于数字,\d
。对于字母和数字,[a-zA-Z0-9]
等
答案 1 :(得分:1)
您可以将*
替换为.*
,将?
替换为.
。但是请注意,我遇到的大多数C ++ <regex>
实现都没有真正的功能,所以目前你需要依赖Boost.regex
。
另外,请注意您需要首先清理用户输入。否则,恶意用户可能会对您的系统造成非常糟糕的事情。