Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
regex在Ruta是如何工作的?_Regex_Uima_Ruta - Fatal编程技术网

regex在Ruta是如何工作的?

regex在Ruta是如何工作的?,regex,uima,ruta,Regex,Uima,Ruta,我正在尝试使用正则表达式验证日期和其他表达式。它在java中工作,但无法在RUTA中进行注释 样本输入: Date 10-20-1994 代码: // Field Name - Date (Regex) DECLARE Keyword DateKeyword; DECLARE Entity Date; "Date" -> DateKeyword("label"="Date"); BLOCK(feature13) Line{CONTAINS(DateKeyword)} { DateKey

我正在尝试使用正则表达式验证日期和其他表达式。它在java中工作,但无法在RUTA中进行注释

样本输入:

Date 10-20-1994
代码:

// Field Name - Date (Regex)
DECLARE Keyword DateKeyword;
DECLARE Entity Date;
"Date" -> DateKeyword("label"="Date");
BLOCK(feature13) Line{CONTAINS(DateKeyword)} {
 DateKeyword c:ANY+{REGEXP("^\\d{2}-\\d{2}-\\d{4}$")->CREATE(Date, "label"= "Date", "value"=c.ct)};
}
无法为日期添加批注。请说明我错过了什么

用于字母数字字符串

输入-
test\u 2309
注释
test

输入-
test2309
注释
test2309

代码-
c:ANY+{REGEXP(“[a-zA-Z0-9]*”)


如何确保它注释全部或返回false。而不是返回覆盖文本?

正则表达式模式的工作方式与Java中的工作方式相同。您缺少的是应用正则表达式的注释范围。在原始情况下,
ANY+
迭代地匹配每个标记(而不是您所期望的整体)。因此,“10”、“-”、“20”等都不能满足正则表达式模式。您应该首先在所需的跨度上创建注释,并在其上应用正则表达式

DECLARE DateKeyword (STRING label);
DECLARE Date (STRING label, STRING value);
DECLARE DateCandidate, Dash;

SPECIAL{-PARTOF(Dash), REGEXP("[-]")-> Dash};

"Date" -> DateKeyword("label"="Date");
DateKeyword ANY[1,5]{OR(PARTOF(Dash), PARTOF(NUM)), -PARTOF(W) -> DateCandidate};
BLOCK(feature13) Line{CONTAINS(DateKeyword)} {
    DateKeyword c:DateCandidate{REGEXP("\\d{2}-\\d{2}-\\d{4}")->CREATE(Date, "label"= "Date", "value"=c.ct)};
}
或者,您可以在单独的Ruta seed注释上应用regex模式:

(NUM{REGEXP("\\d{2}")} SPECIAL NUM{REGEXP("\\d{2}")} SPECIAL NUM{REGEXP("\\d{4}")}){-PARTOF(Date) -> Date}; 

正则表达式模式的工作方式与Java中的工作方式相同。您缺少的是应用正则表达式的注释范围。在原始情况下,
ANY+
迭代地匹配每个标记(而不是像您预期的那样作为一个整体)。因此,“10”、“-”和“20”等等,不要满足正则表达式模式。您应该首先在所需的跨度上创建注释,并在其上应用正则表达式

DECLARE DateKeyword (STRING label);
DECLARE Date (STRING label, STRING value);
DECLARE DateCandidate, Dash;

SPECIAL{-PARTOF(Dash), REGEXP("[-]")-> Dash};

"Date" -> DateKeyword("label"="Date");
DateKeyword ANY[1,5]{OR(PARTOF(Dash), PARTOF(NUM)), -PARTOF(W) -> DateCandidate};
BLOCK(feature13) Line{CONTAINS(DateKeyword)} {
    DateKeyword c:DateCandidate{REGEXP("\\d{2}-\\d{2}-\\d{4}")->CREATE(Date, "label"= "Date", "value"=c.ct)};
}
或者,您可以在单独的Ruta seed注释上应用regex模式:

(NUM{REGEXP("\\d{2}")} SPECIAL NUM{REGEXP("\\d{2}")} SPECIAL NUM{REGEXP("\\d{4}")}){-PARTOF(Date) -> Date}; 

日期使用下面的
c:{REGEXP(“^\\d{2}\\\\-\\d{2}\\\\-\\d{4}$”)->CREATE(Date)
Date使用下面的
c:{REGEXP(^\\d{2}\\\\\\\\\\d{2}\\\\\\\\\\d{4}$”->CREATE(Date code)