跳转到内容

OpenClinica 用户手册/使用正则表达式创建时间字段

来自维基教科书,开放的书籍,开放的世界

使用正则表达式创建时间字段

[编辑 | 编辑源代码]

您有时可能需要一个时间字段。但是,OpenClinica 虽然在日期和部分日期方面非常灵活,但没有标准的时间字段类型。这可以通过使用正则表达式来检查字段中的所有条目来解决。

正则表达式

[编辑 | 编辑源代码]

我们希望我们的时间字段能够接受 01:26 或 11:00 或 19:59 或 20:00 或 23:59 等输入,但拒绝 88:99 或 4:6 等条目。首先,让我们关注 20:00 之前的时间值。正则表达式为 **[0-1]\d:[0-5]\d**,这意味着:小时的第一部分是 0 或 1 ([0-1]),后面跟着一个数字 (\d),然后是冒号 (:),后面跟着分钟,范围从 0 到 5 ([0-5]),最后跟着一个数字 (\d)。然后是 20:00 到 23:59 之间的时间。正则表达式非常类似:**2[0-3]:[0-5]\d**,这意味着:以 2 (2) 开头,后面跟着任何 0 到 3 之间的数字 ([0-3]),然后是冒号和分钟,如前所述。最后,将这两者用管道 (|) 结合起来:**[0-1]\d:[0-5]\d|2[0-3]:[0-5]\d**

使用 regexpal 测试正则表达式

[编辑 | 编辑源代码]

在 OpenClinica 中测试正则表达式并非易事:您必须将正则表达式放入 XL 表格中并上传。语法会被验证,但结果不会。换句话说,您的表达式可能是正确的,但接受了错误的输入或拒绝了正确的输入。要在 OC 中检查这一点,需要将 CRF 添加到研究事件中,然后尝试不同的值。然后修改正则表达式,上传新版本等,直到结果正常。幸运的是,有一些工具可以为您完成这项工作,其中之一是 http://regexpal.com/。该界面包含两个文本区域:一个用于正则表达式,另一个用于输入。如您在下面的屏幕截图中看到的那样,我在第一个字段中复制了正则表达式,在第二个字段中复制了我要测试的值。

Testing the regular expression in regexpal
在 regexpal 中测试正则表达式


与正则表达式匹配的文本字符串的每一段都用黄色或蓝色突出显示,您立即可以看到该表达式运行良好。

模拟正则表达式在 OpenClinica 中的工作方式

[编辑 | 编辑源代码]

如果您希望使用 regexpal 以类似于 OpenClinica 中使用的方式测试您的正则表达式,您可以将它们包装在文本 "^()$" 中。

^(regexp here)$

此文本限制了正则表达式的处理方式,确保匹配占用整行(OpenClinica 中也有类似的限制)。

因此,OpenClinica 中的正则表达式

regexp: /[0-9]/

在 regexpal 中测试时会变成这样

^([0-9])$

这将匹配

4

但不会匹配

d4

(因为 4 不是该行上唯一的字符)

将正则表达式放入您的 XL 表格

[编辑 | 编辑源代码]

现在您可以在 XL 表格中使用正则表达式。以通常的方式添加一个项目,并使用 RESPONSE_TYPE(第 N 列)"text",使用 DATA_TYPE(第 T 列)"ST" 来表示字符串。您的正则表达式位于 VALIDATION(第 V 列)中,前面是 "regexp:",并用斜杠括起来。在第 W 列中填写您的 VALIDATION_ERROR_MESSAGE。

The regular expression in the CRF
CRF 中的正则表达式


就这样,您拥有了自己的时间字段。

添加时间字段的另一种方法

[编辑 | 编辑源代码]

当您需要在 CRF 中比较时间时,必须使用数字数据。但在上述情况下,时间字段的类型为 ST,这意味着您无法对它进行任何操作。但如果您愿意牺牲时间格式,您或多或少可以做到这一点。诀窍是使用一个 REAL 类型的字段,然后向其添加一个正则表达式。您能做到吗?令人惊讶的是,您可以。正则表达式是在数据写入数据库之前使用的。

其他表达式

[编辑 | 编辑源代码]

我们将使用的正则表达式是 **regexp: /|[0-1][0-9]\.[0-5][0-9]|2[0-3]\.[0-5][0-9]/**

它的工作方式与之前的正则表达式相同,但现在分隔符是一个点。由于点在正则表达式中有一定的含义,因此您必须在点前面加上一个反斜杠。现在您可以在 XL 表格中使用正则表达式。以通常的方式添加一个项目,并使用 RESPONSE_TYPE(第 N 列)"text",使用 DATA_TYPE(第 T 列)"REAL" 来表示实数。您的正则表达式位于 VALIDATION(第 V 列)中,在第 W 列中填写您的 VALIDATION_ERROR_MESSAGE。

The regular expression in the CRF
CRF 中的正则表达式


就这样,您拥有了一个可以进行计算的时间字段。

华夏公益教科书