在RapidMiner中使用正则表达式生成新属性

时间:2016-06-23 11:11:32

标签: java regex rapidminer

我使用Excel文件,其中包含几个句子。我想生成新属性(我使用"生成属性"运算符),如果句子包含一些在它们之间带有空格的数字(例如234 45 56),则返回(“true或false”)。我使用了“匹配名义正则表达式”(matches(sentences,"\d+\s+\d))这个函数来做到这一点。但是,我遇到了Rapidminer无法识别escape()字符的问题。如何更改我的正则表达式才能使其正常工作?

一些其他评论/示例:

我的输入句子:

word word 123 345 6665 23456  54 word word word
word word word 12.3 34.5 6665 23.456  5.4 word word word
word word word 12,3    34,5 6665 23,456  5.4 word word word
word word word 12,3%    34,5% 6665% 23,456%  5.4% word word word

如果句子包含这样的数字链,我的输出将是带有true或false的新变量。

我首先考虑使用以下正则表达式来捕捉数字\ d + [。,]?\ d * \ s + \ d + [。,]?\ d *。

1 个答案:

答案 0 :(得分:0)

您可以将\d表示为[0-9],将\s表示为空格。此外,您似乎需要将整行与matches匹配,因此,添加.*

match(sentences,".*[0-9] +[0-9].*")

这匹配除了换行符之外的任何0+字符(尽可能多),后跟一个数字,1 +空格和一个数字,然后再添加除换行符之外的0 +字符。

另外,请尝试将\加倍以匹配\d\s(因为正则表达式是Java风格):

matches(sentences,".*\\d+\\s+\\d.*")