【发布时间】:2022-01-13 21:27:03
【问题描述】:
我一直试图弄清楚为什么我在 Teradata 中的 REGEX 表达式有时但并非总是有效:我试图提取中间有模式的部分字符串:它以 ABC 开头,后跟 3 或 4数字。
select RegExp_Substr('X886782E-ABC2036-VACCINE COVID', '[ABC]+[0-9]+')
我的逻辑大部分时间都有效,但并非总是如此:它并不总是能识别以 ABC 开头并后跟 3-4 位数字的部分字符串。
【问题讨论】:
-
[ABC]+匹配一个或多个大写字母,每个为'A'、'B'或'C',例如'CAA'。如果字符串必须始终跟随连字符,则您希望ABC[0-9]+(或ABC\d+)或\bABC[0-9]+阻止ZABC123'或(?<=-)ABC[0-9]+的匹配。最后一个是积极的回顾。我不知道 Teradata 的正则表达式引擎是否支持lookbehinds。 -
谢谢你,卡里。我已经尝试了所有这些选项,它们都有效。