我的字符串如下:
7,TEST-31052019-02,CD12345,CD54321,Success,Deliverable Recipients
我想使用nifi
中的Extract Text Processor从中提取两个值。一个TEST-31052019-02
和CD54321
。
我尝试过VF[A-Z]*-[0-9]*-[0-9]*
并且能够提取TEST-31052019-02
。如何使用相同的正则表达式提取CD54321
?
VF[A-Z]*-[0-9]*-[0-9]*
预期输出:
TEST-31052019-02, CD54321
答案 0 :(得分:3)
我猜我们希望提取两个值TEST-31052019-02
([A-Z]+-[0-9]+-[0-9]+)
和CD54321
([A-Z0-9]+),[A-Z][a-z]
在这里我们使用,[A-Z][a-z]
作为此捕获组旁边的右边界:
([A-Z0-9]+)
如果我们想将它们结合起来,我们可以使用交替:
([A-Z0-9]+),[A-Z][a-z]|([A-Z]+-[0-9]+-[0-9]+)
jex.im可视化正则表达式:
答案 1 :(得分:3)
您还可以匹配1个以上大写字符,并使用破折号匹配该模式或匹配1个以上数字,并使用正向先行断言以下是大写和小写字符:
[A-Z]+(?:-[0-9]+-[0-9]+|[0-9]+(?=,[A-Z][a-z]))
说明
[A-Z]+
匹配1个以上大写字符(?:
非捕获组
[0-9]+-[0-9]+
匹配数字和连字符模式|
或[0-9]+(?=,[A-Z][a-z])
匹配1个以上的数字,并使用正向先行来断定右边的,
大写小写字母a-z )
关闭非捕获组请注意,在您的模式中,您使用
[0-9]*-[0-9]*
,但是*
量词将重复0次以上,并且也可以匹配--