我尝试使用KNIME(v3.2.1)删除以非数字字符开头的所有单元格的内容。我有不同的想法,但没有任何作用。
1)字符串操作节点:regexReplace(§column§,"^[^0-9].*","")
单元格包含多行,但是这种方法只删除了第一行。
2)字符串操作节点:regexMatcher($casrn_new$,"^[^0-9].*")
后跟规则引擎节点删除所有" TRUE"的列。
regexMatcher给了我" False"即使对于应该是" True"虽然。
3)String Replacer Node:我将表达式^[^0-9].*
插入Pattern列并选择"替换整个String"但该节点无法识别正则表达式,因此无法替换任何内容。
有没有人能够找到任何这些方法的解决方案,或者知道另一个可能完成这项工作的Node?非常感谢帮助!
答案 0 :(得分:4)
我会选择您的第一个解决方案,因为它已经有效,您只需要扩展您的正则表达式以包含换行符。我会尝试这样的事情:
regexReplace($column$,"^[^0-9].(.|\n)*","")
这应匹配任何以不是数字的字符开头的文本,后跟任何字符或换行符的出现次数。根据行结尾,您可能需要(.|\n|\r)
而不是(.|\n)
。
答案 1 :(得分:1)
您应该使用以下表达式:
"(?s)^\D.*$"
所以这个点甚至会匹配新线。 (基于此:https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html#DOTALL)
如果您只需要更改不以数字开头的单元格的内容,我认为您不需要过滤任何列或行。 (顺便说一下,如果你想删除行,有基于规则的行过滤器/拆分器节点,它们也支持带有MATCHES谓词的正则表达式。)