我有一个Ecore模型,在这里我想补充一些OCL约束。
我的问题是当我试图让一个属性(字符串)是在有效的IPv4形式。 我想我应该使用正则表达式,但我不知道在所有关于如何在OCLinEcore使用正则表达式。
我有一个Ecore模型,在这里我想补充一些OCL约束。
我的问题是当我试图让一个属性(字符串)是在有效的IPv4形式。 我想我应该使用正则表达式,但我不知道在所有关于如何在OCLinEcore使用正则表达式。
由于Eclipse中的Juno,你可以在OCL使用正则表达式。 就调用它的功能是匹配(正则表达式),就像在Java中。
context Packet
inv ValidIPv4 : ip.matches('\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b')
来源: http://help.eclipse.org/juno/index.jsp?topic=%2Forg.eclipse.ocl.doc%2Fhelp%2FCompleteOCLTutorial.html
如果您有Eclipse的以前版本的,那么我建议你Ecore元素上加入了Java的约束,则通过生成的Java模板代码验证你的元素。
至于正则表达式的一部分:
\b([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\b
匹配0.0.0.0通过999.999.999.999使用此快速而简单的正则表达式,如果你知道数据不包含无效的IP地址。 各4个数字被存储到捕获组,这样就可以访问它们用于进一步处理。