使用 owa_pattern 删除数字和特殊字符
Posted
技术标签:
【中文标题】使用 owa_pattern 删除数字和特殊字符【英文标题】:remove number and special character using owa_pattern 【发布时间】:2014-04-22 17:32:48 【问题描述】:在 oracle 9i 中使用 owa_pattern.change。
是否可以删除字符串中的数字和尾随特殊字符(请注意仅尾随)特殊字符?
我将特殊字符称为既不是单词也不是数字的字符。 例如 _ , # , @ ,$ 等 ...
例如。
字符串 = TEST_STRING_10
期望的输出是 TEST_STRING(注意只有尾随的特殊字符 _ 被删除了)。
我已经想出了如何删除数字,但卡在特殊字符部分。
到目前为止,我有这个代码。
OWA_PATTERN.CHANGE (string, '\d', '', 'g');
欣赏任何输入。
谢谢!
【问题讨论】:
【参考方案1】:试试下面的。
OWA_PATTERN.CHANGE (string, '[^a-zA-Z]+$', '');
正则表达式
[^a-zA-Z]+ any character except: 'a' to 'z', 'A' to 'Z'
(1 or more times (matching the most amount possible))
$ before an optional \n, and the end of the string
【讨论】:
谢谢。如果没问题,你能分解一下这段代码的作用吗?'[^a-zA-Z]+$' 似乎您编辑了第一个实际有效的答案。这个只删除一个下划线。 :( 太棒了!我在互联网上找到的关于 owa_pattern 的文档很少。你的回答对我帮助很大。谢谢。 第二个不起作用,但第一个对我有用。【参考方案2】:这样就可以了:
DECLARE
result VARCHAR2(255);
BEGIN
string := 'TEST_STRING_10';
result := REGEXP_REPLACE(string, '([[:alnum:]_].*)_[[:digit:]]+', '\1', 1, 0, 'c');
END;
【讨论】:
遗憾的是,我们仍在 9i 中并且正则表达式不可用。 owa_pattern 是我能找到的最接近的。 @user2058738 看来你已经得到答案了,好:)以上是关于使用 owa_pattern 删除数字和特殊字符的主要内容,如果未能解决你的问题,请参考以下文章
如何使用正则表达式从字符串中删除字符串和特殊字符并仅显示不带逗号的数字?