我正在尝试记下正则表达式以找到我在存储过程中的where子句中使用ltrim rtrim的位置。
正则表达式应匹配以下内容:
RTRIM(LTRIM(PGM_TYPE_CD))= 'P'))
RTRIM(LTRIM(PGM_TYPE_CD))='P'))
RTRIM(LTRIM(PGM_TYPE_CD)) = 'P'))
RTRIM(LTRIM(PGM_TYPE_CD))= P
RTRIM(LTRIM(PGM_TYPE_CD))= somethingelse))
等...
我正在尝试类似......
.TRIM.*\)\s+
答案 0 :(得分:1)
[RL]TRIM\s*\(
将查找R
或L
后跟TRIM
,任意数量的空格,然后(
答案 1 :(得分:0)
这就是你想要的:
[LR]TRIM\([RL]TRIM\([^)]+\)\)\s*=\s*[^)]+\)*
这是做什么的:
[LR] # Match single char, either "L" or "R"
TRIM # Match text "TRIM"
\( # Match an open parenthesis
[RL] # Match single char, either "R" or "L" (same as [LR], but easier to see intent)
TRIM # Match text "TRIM"
\( # Match an open parenthesis
[^)]+ # Match one or more of anything that isn't closing parenthesis
\)\) # Match two closing parentheses
\s* # Zero or more whitespace characters
= # Match "="
\s* # Again, optional whitespace (not req unless next bit is captured)
[^)]+ # Match one or more of anything that isn't closing parenthesis
\)* # Match zero or more closing parentheses.
如果这是自动化的,并且您想知道其中包含哪些变量,则可以围绕相关部分括起括号:
[LR]TRIM\([RL]TRIM\(([^)]+)\)\)\s*=\s*([^)]+)\)*
这将为您提供第1组和第2组中的第一个和第二个变量(根据使用的正则表达式,\ 1和\ 2或$ 1和$ 2)。
答案 2 :(得分:0)
这样的事情怎么样:
.*[RL]TRIM\s*\(\s*[RL]TRIM\s*\([^\)]*)\)\s*\)\s*=\s*(.*)
这将捕获第1组和第2组中修剪内部和=的右侧,并应处理所有相关区域中的所有空白。