我有这些字符串,我想返回正则表达式确认那些模式。
NS::varible.child // OK
variable.child // OK
NS:variable.child // NO MATCH
::variablename.child // OK
:variablename.child // NO MATCH
_variablename.child.x // OK
5variablename.child.x // NO MATCH
我想要C ++变量名称匹配 - >>运算符和模板<>
我想出了这个正则表达式。
[a-z\_:{2,2}A-Z][a-z\_A-Z0-9\.:{2,2}]*
:{2,2}
似乎没有按我的意愿行事。它也接受单个冒号。
如何确切检查两个冒号?更好的正则表达式匹配C ++变量结构?
答案 0 :(得分:2)
答案 1 :(得分:1)
就像@Wiseguy所说,你不能在角色类中使用特殊字符([
]
)。正确的解决方案是使用分组在文字和字符类之间交替:
([a-zA-Z]|::)
编辑:更全面解释
如果你考虑一个角色类,它只是一种专门写作小组的方式:
(a|b|c|d|e|f|g)
与:
相同[a-g]
所以通过使用一组来获得额外的角色,你将会实现同样的目标。
答案 2 :(得分:1)
^(\ W + | ::)(:: |)。\ W + \ W +
试一试。你可以使用" ::"字面意思是匹配两个":"