oracle 正则表达式?=

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 正则表达式?=相关的知识,希望对你有一定的参考价值。

oracle11g正则表达式支持?=写法吗,我写了一个不起作用,谁那有样例,麻烦给一个,多谢。... oracle11g 正则表达式支持?=写法吗,我写了一个不起作用,谁那有样例,麻烦给一个,多谢。 展开

参考技术A

Oracle使用正则表达式离不开这4个函数:
1、regexp_like
2、regexp_substr
3、regexp_instr
4、regexp_replace
regexp_like 只能用于条件表达式,和
like
类似,但是使用的正则表达式进行匹配,语法如下:
regexp_substr 函数,和
substr
类似,用于拾取合符正则表达式描述的字符子串,语法如下:
regexp_instr 函数,和
instr
类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:
regexp_replace 函数,和
replace
类似,用于替换符合正则表达式的字符串,语法如下:
解析一下几个参数的含义:
1、source_char,输入的字符串,可以是列名或者字符串常量、变量。
2、pattern,正则表达式。
3、match_parameter,匹配选项。
取值范围:
i:大小写不敏感;
c:大小写敏感;n:点号
.
不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。
4、position,标识从第几个字符开始正则表达式匹配。
5、occurrence,标识第几个匹配组。
6、replace_string,替换的字符串。

oracle 正则表达式如何提取AABAAB类型的数据?

oracle 正则表达式如何表达AABAAB型,另外regexp_like(servnumber,'((\d)\11(\d))1$'),没有结果显示。

用 regexp_like这个函数来解决,正则表达式为:[[:punct:]]+这个正则可以找出任何标点符号。
查询value中包含任何标点符号的记录如下:
select * from xxx where regexp_like(value,'[[:punct:]]+');

POSIX 正则表达式由标准的元字符(metacharacters)所构成: '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表达式零次或一次。 '*' 匹配前面的子表达式零次或多次。
'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的 '( )' 标记一个子表达式的开始和结束位置。 'm,n' 一个精确地出现次数范围,m=<出现次数<=n,'m'表示出现m次,'m,'表示至少出现m次。
\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 [[:alpha:]] 任何字母。
[[:digit:]] 任何数字。
[[:alnum:]] 任何字母和数字。
[[:space:]] 任何白字符。
[[:upper:]] 任何大写字母。
[[:lower:]] 任何小写字母。
[[:punct:]] 任何标点符号。
[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 \转义符 *, +, ?, n, n,, n,m 限定符^, $, anymetacharacter 位置和顺序。
参考技术A (((\w)\3)\w)\1追问

你这个三个连续数据是递增或者递减的。运行结果如下:
553012
553765
565567
666678
553345
553321
676678
010012
553123
11121123
522567

追答



如果都是数字就可以换成\\d,上面的多用了一个括号可以省略一个:

((\\d)\\2\\d)\\1

如果要求整个数据符合要求那么开头结尾加上\\b

\\b((\\d)\\2\\d)\\1\\b

以上是关于oracle 正则表达式?=的主要内容,如果未能解决你的问题,请参考以下文章

Oracle正则表达式

oracle 正则表达式如何提取AABAAB类型的数据?

oracle SQL 正则表达式

oracle 正则表达式

求一条oracle的正则表达式

如何利用oracle正则表达式去除字段中含有的汉字