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

Java 在RapidMiner中使用正则表达式生成新属性,java,regex,rapidminer,Java,Regex,Rapidminer,我使用Excel文件,其中包含几个句子。我想生成新的属性(我使用“generate attribute”操作符),如果句子中包含一些数字,并且这些数字之间有空格(例如234 45 56),则返回(“true或false”)。我使用了函数“match nominal regex”(matches(句子),\d+\s+\d))来完成此操作。但是,我遇到了一个问题,Rapidminer无法识别转义()字符。如何更改我的regex使其工作 其他一些评论/示例: 我输入的句子: word word 123

我使用Excel文件,其中包含几个句子。我想生成新的属性(我使用“generate attribute”操作符),如果句子中包含一些数字,并且这些数字之间有空格(例如234 45 56),则返回(“true或false”)。我使用了函数“match nominal regex”(
matches(句子),\d+\s+\d)
)来完成此操作。但是,我遇到了一个问题,Rapidminer无法识别转义()字符。如何更改我的regex使其工作

其他一些评论/示例:

我输入的句子:

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*

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

match(sentences,".*[0-9] +[0-9].*")
这将匹配除换行符以外的任何0+字符(尽可能多),后跟数字、1+空格和数字,然后再匹配除换行符以外的0+字符

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


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

match(sentences,".*[0-9] +[0-9].*")
这将匹配除换行符以外的任何0+字符(尽可能多),后跟数字、1+空格和数字,然后再匹配除换行符以外的0+字符

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


请举例说明您的输入和输出如何?请尝试
match(句子,*\d\s+\d.*)
match(句子,*[0-9]+[0-9].*))
@In777:尝试过我的建议了吗?@Wiktor Stribiżew感谢您的帮助,第一个不起作用,因为\。第二个似乎很好。请举例说明您的输入和输出如何?尝试
匹配(句子,.*\d\s+\d.*)
匹配(句子,.[0-9]+[0-9].*))<7/7:797:尝试过我的建议吗?@维克多特里比。谢谢你的帮助,第一个不起作用。因为第二个似乎很好。很高兴它对你有用,如果你觉得它有用的话,也请考虑一下投票。很高兴它对你有用,如果你觉得它有用的话,也请考虑一下投票。