我正在尝试在KNIME中使用String Manipulation中的regexMatcher但它不起作用。我写的是以下内容: regexMatcher($文件$, “/ \ W”) 当我想提取所有/ s或/ p或w / p或/ 200的句子时。然而,即使我在我的表中有这样的情况,也没有找到任何东西。我将非常感谢你的帮助。
答案 0 :(得分:1)
我得到了以下内容:
|Document |isOK |other|strict|
|--------------|-----|-----|------|
|Some /p with q|True |False|False |
|/200 |True |True |False |
|/p |True |True |True |
|/s |True |True |True |
|w/p |True |False|False |
|no slash |False|False|False |
表达式:
regexMatcher($Document$, ".*?/\\w.*")
(我想这就是你所追求的。) regexMatcher($Document$, "/\\w.*")
regexMatcher($Document$, "/\\w")
(文档在最后一个可见字符后不包含任何内容。)
您可能遇到的问题是字符串操纵器节点的转义和regexMatcher
的语义。
其中的字符串文字只有一个Java字符串,因此您必须转义\
(以及其他一些字符),因此它变为\\
。
regexMatcher
的语义是匹配整个String,所以你必须在你要查找的值之前添加.*?
(非贪婪匹配任何东西)和.*
(贪婪)在你正在寻找的表达式之后匹配任何东西。
(显然,如果我误解了你的问题,那么语义可能已经是你想要的了。)
BTW:如果你想过滤,你应该检查Rule-based Row Filter节点,因为它提供了一个直接按正则表达式过滤的选项。它使用不同的转义规则(对于isOK选项):
$Document$ MATCHES ".*?/\w.*" => TRUE
(引号内不允许转义)$Document$ MATCHES /.*?\/\\w.*/ => TRUE
(在斜杠中允许转义(/
,\
需要转义,但不需要"
))