我有一個Ecore模型,我試圖添加一些OCL約束。OCLinEcore和正則表達式來創建有效的IPv4字符串
我試圖製作一個有效的IPv4格式的屬性(字符串)時出現問題。我想我應該使用正則表達式,但我不知道如何在OCLinEcore上使用正則表達式。
我有一個Ecore模型,我試圖添加一些OCL約束。OCLinEcore和正則表達式來創建有效的IPv4字符串
我試圖製作一個有效的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')
如果您有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個數字中的每一個都存儲在一個捕獲組中,因此您可以訪問它們以進行進一步處理。
問題是如何比較屬性與正則表達式 –