2

我有一个 Ecore 模型,我正在尝试添加一些 OCL 约束。

当我尝试创建一个有效 IPv4 形式的属性(字符串)时,我的问题就出现了。我想我应该使用正则表达式,但我完全不知道如何在 OCLinEcore 上使用正则表达式。

4

2 回答 2

2

从 Eclipse Juno 开始,您可以在 OCL 中使用正则表达式。调用它的函数是matches(regex),就像在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 模板代码验证您的元素。

于 2013-09-25T14:37:02.070 回答
1

至于正则表达式部分:

\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 个数字中的每一个都存储在一个捕获组中,因此您可以访问它们以进行进一步处理。

于 2012-06-07T21:43:58.417 回答