如何在Teradata中使用regexp_instr,使搜索的起始位置从末尾开始?与INSTR不同,它不接受-1作为位置参数?我试图从字符串末尾获得模式的出现。与INSTR不同,它不接受-1作为位置参数。
yqkkidmi1#
正则表达式不是这样工作的,而是用$将模式锚定到字符串的末尾,所以如果你想让所有字符串都以XYZZY结尾,你的正则表达式就是XYZZY$。
EDITOP显示需要的是最后一个字母数字字符的位置。因此,使用regex查找一个字母数字,后跟不确定数量的非字母数字,然后是字符串的结尾。
使用最小公分母regexp函数,字母数字是[A-Za-z0-9],或者,如果我们记得在调用中打开“i”标志,我们可以将其缩短为[a-z0-9]。类似地,非字母数字是[^a-z0-9],并且它们的任何可能的数目是[^a-z0-9]*。最后,字符串的结尾是$。将所有这些放在一起,
[A-Za-z0-9]
[a-z0-9]
[^a-z0-9]
[^a-z0-9]*
$
Regexp_instr(mytextcolumn,'[a-z0-9][^a-z0-9]*$',1,1,0,'i')
零参数返回匹配项的第一个位置。
1条答案
按热度按时间yqkkidmi1#
正则表达式不是这样工作的,而是用$将模式锚定到字符串的末尾,所以如果你想让所有字符串都以XYZZY结尾,你的正则表达式就是XYZZY$。
EDITOP显示需要的是最后一个字母数字字符的位置。因此,使用regex查找一个字母数字,后跟不确定数量的非字母数字,然后是字符串的结尾。
使用最小公分母regexp函数,字母数字是
[A-Za-z0-9]
,或者,如果我们记得在调用中打开“i”标志,我们可以将其缩短为[a-z0-9]
。类似地,非字母数字是[^a-z0-9]
,并且它们的任何可能的数目是[^a-z0-9]*
。最后,字符串的结尾是$
。将所有这些放在一起,零参数返回匹配项的第一个位置。