具有多个组的正则表达式,其中一些是可选的
Regex with multiple groups, some of which are optional
我无法匹配多个组,其中一些是可选的。我试过 greedy/non greedy 的变体,但无法正常工作。
作为输入,我有如下所示的单元格:
SEPA Overboeking IBAN: AB1234 BIC: LALA678 Naam: John Smith Omschrijving: Hello hello Kenmerk: 03-05-2019 23:12 533238
我想将它们分成 IBAN、BIC、Naam、Omschrijving、Kenmerk 组。
对于这个例子,这会产生:AB1234; LALA678;约翰·史密斯;你好你好; 03-05-2019 23:12 533238。
为了获得这个,我使用了:
.*IBAN: (.*)\s+BIC: (.*)\s+Naam: (.*)\s+Omschrijving: (.*)\s+Kenmerk: (.*)
只要所有这些组都出现在输入中,这就可以完美地工作。但是,有些单元格没有 "Omschrijving" and/or "Kenmerk" 部分。作为输出,如果它们不存在,我希望有空组。现在,没有任何匹配。
我试过 greedy/non greedy 的变体,但无法让它工作。
不胜感激!
N.B.: 我在KNIME(开源数据分析工具)工作
我能够使用以下正则表达式拆分您的输入:
^.*
\s+IBAN\:\s*(?<IBAN>.*?)
\s+BIC\:\s*(?<BIC>.*?)
\s+Naam\:\s*(?<Naam>.*?)
(?:\s+Omschrijving\:\s*(?<Omschrijving>.*?))?
(?:\s+Kenmerk\:\s*(?<Kenmerk>.*?))?
$
这要求您的字段遵循给定的顺序,并将根据需要处理字段 IBAN
、BIC
和 Naam
。字段 Omschrijving
和 Kenmerk
可能是可选的。我很确定,这仍然可以优化,但它会产生以下输出,这对你来说应该没问题(或者至少是一个起点):
为了在 KNIME 中进行评估和测试,我使用了 Palladian 的 Regex Extractor 节点,它可以按如下方式配置并提供了一个很好的预览功能:
我在 NodePit Space 中添加了一个示例工作流程。它包含一些示例行,解析它们并提供上面看到的输出。
我无法匹配多个组,其中一些是可选的。我试过 greedy/non greedy 的变体,但无法正常工作。
作为输入,我有如下所示的单元格:
SEPA Overboeking IBAN: AB1234 BIC: LALA678 Naam: John Smith Omschrijving: Hello hello Kenmerk: 03-05-2019 23:12 533238
我想将它们分成 IBAN、BIC、Naam、Omschrijving、Kenmerk 组。
对于这个例子,这会产生:AB1234; LALA678;约翰·史密斯;你好你好; 03-05-2019 23:12 533238。 为了获得这个,我使用了:
.*IBAN: (.*)\s+BIC: (.*)\s+Naam: (.*)\s+Omschrijving: (.*)\s+Kenmerk: (.*)
只要所有这些组都出现在输入中,这就可以完美地工作。但是,有些单元格没有 "Omschrijving" and/or "Kenmerk" 部分。作为输出,如果它们不存在,我希望有空组。现在,没有任何匹配。 我试过 greedy/non greedy 的变体,但无法让它工作。
不胜感激!
N.B.: 我在KNIME(开源数据分析工具)工作
我能够使用以下正则表达式拆分您的输入:
^.*
\s+IBAN\:\s*(?<IBAN>.*?)
\s+BIC\:\s*(?<BIC>.*?)
\s+Naam\:\s*(?<Naam>.*?)
(?:\s+Omschrijving\:\s*(?<Omschrijving>.*?))?
(?:\s+Kenmerk\:\s*(?<Kenmerk>.*?))?
$
这要求您的字段遵循给定的顺序,并将根据需要处理字段 IBAN
、BIC
和 Naam
。字段 Omschrijving
和 Kenmerk
可能是可选的。我很确定,这仍然可以优化,但它会产生以下输出,这对你来说应该没问题(或者至少是一个起点):
为了在 KNIME 中进行评估和测试,我使用了 Palladian 的 Regex Extractor 节点,它可以按如下方式配置并提供了一个很好的预览功能:
我在 NodePit Space 中添加了一个示例工作流程。它包含一些示例行,解析它们并提供上面看到的输出。