【问题标题】:Regex For Multiple Lines in KnimeKnime中多行的正则表达式
【发布时间】:2019-08-06 14:33:27
【问题描述】:

我正在使用 Knime 在我的 X 列之一的数据中的任何位置查找类似 AB1234 的模式。X 在每个单元格中可以有多行,但我不知道如何搜索所有行。下面是我目前的正则表达式,你能帮我搜索所有行吗

我首先尝试了这个来搜索,但它只在该模式出现在单元格的第一行时才匹配,不适用于带有换行符的单元格:

.*?[A-Z]{2}[0-9]{4}.*

然后我尝试这样做来搜索我的所有行,但它不起作用,只搜索了第一行:

(.*|[\r\n])[A-Z]{2}[0-9]{4}(.*|[\r\n])

【问题讨论】:

  • 全局搜索/.*?[A-Z]{2}[0-9]{4}.*/g
  • 现在没有任何匹配项
  • 你能给我们一个示例字符串吗? /g 用于全局搜索。这意味着它将匹配所有事件。您通常还会看到 i 表示忽略大小写。 “g”标志表示应该针对字符串中所有可能的匹配项测试正则表达式
  • 类似于文本、换行符、textAB1234text。我在匹配换行符时遇到问题
  • 不确定您使用的是哪个正则表达式。请参阅此示例:regex101.com/r/eb5C5q/1 并尝试在此处运行您的正则表达式。

标签: java regex line-breaks knime


【解决方案1】:

您可以同时使用内联 embedded flag expression for multiline mode(?m)embedded DOTALL flags(?s)

您的第一个表达式如下所示:

(?ms).*?([A-Z]{2}[0-9]{4}).*

【讨论】:

  • 这仍然不起作用 - (?m) 在 Knime 中如何工作?我应该在字符串操作节点中使用其余的正则表达式代码指定该表达式吗?
  • 嗨@RachelKatz 也添加了DOTALL ((?s))。我不知道你想删除它周围的全部内容。
猜你喜欢
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 1970-01-01
  • 2011-05-29
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
相关资源
最近更新 更多