在 RapidMiner 中使用正则表达式生成新属性
Generate new attribute using regex in RapidMiner
我使用 Excel 文件,其中包含几个句子。我想生成新属性(我使用 "Generate Attribute" 运算符),如果句子包含一些数字之间有空格(例如 234 45 56),则生成新属性 returns(“真或假”)。我使用函数“匹配标称正则表达式”(matches(sentences,"\d+\s+\d)
)来做到这一点。但是,我遇到了 Rapidminer 无法识别转义 () 字符的问题。如何更改我的正则表达式以使其正常工作?
一些额外的comments/examples:
我输入的句子:
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
表示为 space。此外,您似乎需要将整行与 matches
匹配,因此,添加 .*
match(sentences,".*[0-9] +[0-9].*")
这匹配除换行符之外的任何 0+ 个字符(尽可能多),后跟一个数字,1+ spaces 和一个数字,然后再匹配除换行符之外的 0+ 个字符。
此外,尝试将 \
加倍以匹配 \d
或 \s
(因为正则表达式是 Java 风格):
matches(sentences,".*\d+\s+\d.*")
我使用 Excel 文件,其中包含几个句子。我想生成新属性(我使用 "Generate Attribute" 运算符),如果句子包含一些数字之间有空格(例如 234 45 56),则生成新属性 returns(“真或假”)。我使用函数“匹配标称正则表达式”(matches(sentences,"\d+\s+\d)
)来做到这一点。但是,我遇到了 Rapidminer 无法识别转义 () 字符的问题。如何更改我的正则表达式以使其正常工作?
一些额外的comments/examples:
我输入的句子:
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
表示为 space。此外,您似乎需要将整行与 matches
匹配,因此,添加 .*
match(sentences,".*[0-9] +[0-9].*")
这匹配除换行符之外的任何 0+ 个字符(尽可能多),后跟一个数字,1+ spaces 和一个数字,然后再匹配除换行符之外的 0+ 个字符。
此外,尝试将 \
加倍以匹配 \d
或 \s
(因为正则表达式是 Java 风格):
matches(sentences,".*\d+\s+\d.*")