Perl 将两个正则表达式合并为一个正则表达式

Perl 将两个正则表达式合并为一个正则表达式,perl,Perl,我需要合并这两个正则表达式 ^.*(已完成:巴厘岛-工作)。*$和\b(巴厘岛)(发票|信函|延迟扫描)\b合并成一个,这样它应该匹配“已完成:巴厘岛-工作”“巴厘岛发票或巴厘岛信函或巴厘岛延迟扫描”作为替代方案扩展David SkyMesh的答案,第一部分为强制性,第二部分为三个备选方案: / ( # capture (?:Completed: BALI - Job)

我需要合并这两个正则表达式
^.*(已完成:巴厘岛-工作)。*$
\b(巴厘岛)(发票|信函|延迟扫描)\b
合并成一个,这样它应该匹配
“已完成:巴厘岛-工作”
“巴厘岛发票或巴厘岛信函或巴厘岛延迟扫描”作为替代方案

扩展David SkyMesh的答案,第一部分为强制性,第二部分为三个备选方案:

/ (                                                           # capture
    (?:Completed: BALI - Job)                                 # this
                                                              # AND optionally
                                                              # one of these
    (?:\bBALI_(?:INVOICES|CORRESPONDENCE|LATE_SCANNINGS)\b)?  
  )
/x                       # ignore whitespace & comments in regexp itself

由于第二部分是可选的,因此会附加一个

^.*(Completed: BALI - Job).*(\b(BALI_)(INVOICES|CORRESPONDENCE|LATE_SCANNINGS)\b)?

您能提供所需匹配和不匹配的示例吗?我删除了我的答案,因为这是对问题的不可能的解释。欢迎使用堆栈溢出。请尽快阅读这一页。请注意,写可回答的问题很重要。目前,很难解释您的需求。在这种情况下,您可能应该显示一些示例输入行,说明什么应该被接受,什么不应该被接受,如果您确定了捕获应该在您呈现的变体中捕获什么,这将有所帮助。例如,输入行
BALI\u INVOICES done:Completed:BALI-Job finished
,是否与组合正则表达式匹配?
状态如何?已完成:巴厘岛-工作巴厘岛发票不完整
?应匹配已完成:巴厘岛-工作巴厘岛发票/巴厘岛通信/巴厘岛晚扫描。谢谢你的努力,不过我做到了。我使用了这个^(已完成:BALI-Job)。*(\b(BALI|)?(发票|信函|延迟扫描)\b)。*$假设(1)可选替代方案需要出现在强制部分之后,以及(2)两个匹配部分之间不需要任何内容。@David SkyMesh:是的,没错。让我们看看OP是怎么说的。这个问题可能还不清楚。它应该匹配完成:巴厘岛-工作作为强制性和任何1个选项的休息。巴厘岛发票/巴厘岛信函/巴厘岛晚扫描。谢谢你的努力,不过我做到了。我使用了这个(完成的:巴厘-Job).*(\b(Baliig)?(发票(对应的“TeleSysCurnices”\))** $,这似乎是对(非常不明确)问题的合理解释,除了,(1)中间的代码> *//> >需要<代码> *> <代码>,(2)开始时<代码> ^ *>代码>是不必要的。我肯定行动组不想被分拍。