【发布时间】:2022-01-08 20:16:03
【问题描述】:
我在 Microsoft SSIS 中有很长的公式列表,我必须将它们转换为 SQL 查询。我列表中的所有公式基本上都是按照以下规则制作的:
-
PART_1 ? PART_2 : PART_3表示如果 PART_1(测试)为真则为 PART_2,如果为假则为 PART_3 -
&&表示 AND(适用于 PART_1(测试)中的不同条件
我的目标是在 Notepad++ 中从大多数外部表达式中提取 PART_1、PART_2 和 PART_3,例如以下示例:
案例一
表达式:A>0 ? B : C
- PART_1(测试)=>
A>0 - PART_2(如果为真)=>
B - PART_3(如果为假)=>
C
案例二
表达式:A>0 && (A>10 ? A : -A) ? B : C
- PART_1(测试)=>
A>0 && (A>10 ? A : -A) - PART_2(如果为真)=>
B - PART_3(如果为假)=>
C
案例三
表达式:A>0 ? B : (C>14 ? A*14 : -4)
- PART_1(测试)=>
A>0 - PART_2(如果为真)=>
B - PART_3(如果为假)=>
(C>14 ? A*14 : -4)
案例四
表达式:A>0 ? (A>0 ? 2-B : C) : (C>14 ? A*14 : -4)
- PART_1(测试)=>
A>0 - PART_2(如果为真)=>
(A>0 ? 2-B : C) - PART_3(如果为假)=>
(C>14 ? A*14 : -4)
我做了什么
在记事本++中我做了以下正则表达式来提取三个部分
PART_1(测试)
.*?\?
PART_2(如果为真)
\?.*?:
PART_3(如果为假)
:.*
没有标记 "。匹配换行符" 选项。
主要问题是它们(当然)匹配所有内容,而不仅仅是最外部的表达式,因此我不能将它们与嵌套公式一起使用。 我该如何解决这个问题?
【问题讨论】:
-
一般来说,这里需要一个像ANTLR这样的表达式解析器;正则表达式本身不能很好地处理嵌套内容。
标签: regex ssis notepad++ ssis-2012 ssis-2008