Knime字符串替换器,替换所有内容,直到有特殊的字符串

时间:2019-11-08 08:13:33

标签: regex knime

我对this有个疑问。我也在使用字符串操作节点。

现在我有以下字符串(在一列中):

Order[NN(STTS)]
523:10[CARD(STTS)]
Euro12[NN(STTS)]

我想要输出:

[NN(STTS)]
[CARD(STTS)]
[NN(STTS)]

我现在如何使用stringManipulation来做到这一点:

regexReplace($List(Term)$, "/(.*?)\[" , "[")

我当前得到的输出是:

?
?
?

如果我正在使用Java正则表达式在线检查它:https://regex101.com/r/z6eOHv/1 输出看起来很好: enter image description here

我怎么了?

1 个答案:

答案 0 :(得分:2)

regexReplace($List(Term)$, "(.*?)\\[" , "[")是一个“快速修复”:/似乎是在线正则表达式测试服务中使用的正则表达式文字符号的残余,您不需要这里,因为Java正则表达式已定义仅包含字符串文字,最后一个[应该在字符串文字中进行两次转义。

但是,您可以只使用

regexReplace($List(Term)$, "^[^\\[]+" , "")

正则表达式字符串为^[^\[]+,请参见regex demo。匹配

  • ^-字符串的开头
  • [^\[]+-除+以外的1个或多个([量词匹配1个或多个匹配项)([^...]是一个否定字符类,与除在课程中指定)。

由于字符串文字支持字符串转义序列(例如制表符\t或换行符\n),因此必须将反斜杠加倍以引入单个文字反斜杠。