OCLinEcore和正则表达式来创建有效的IPv4字符串(OCLinEcore and Regex

2019-09-17 21:57发布

我有一个Ecore模型,在这里我想补充一些OCL约束。

我的问题是当我试图让一个属性(字符串)是在有效的IPv4形式。 我想我应该使用正则表达式,但我不知道在所有关于如何在OCLinEcore使用正则表达式。

Answer 1:

由于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模板代码验证你的元素。



Answer 2:

至于正则表达式的一部分:

\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个数字被存储到捕获组,这样就可以访问它们用于进一步处理。



文章来源: OCLinEcore and Regex to create valid IPv4 string