【SQL查询】正则表达式匹配字符串
_regexp_likesubstrinstrreplace 1. 元字符说明
元字符含义
^匹配输⼊字符串的开始位置。
$匹配输⼊字符串的结尾位置。
*匹配前⾯的字符零次或多次。
+匹配前⾯的字符⼀次或多次。
?匹配前⾯的字符零次或⼀次。
.匹配任何字符,除了空.
|指明两项之间的⼀个选择。例⼦'^([a-z]+|[0-9]+)$'表⽰所有⼩写字母或数字组合成的字符串。
[ ]⽤于指定要在其中尝试匹配列表中任何⼀个字符的匹配列表。
[^ ]⽤于指定⼀个不匹配列表,要尝试匹配除列表中的字符之外的任何字符。
[…]接受括号中的任⼀字符
[^…]不接受括号中的任⼀字符
( )标记⼀个⼦表达式的开始和结束位置(字符组)。
{m}正好匹配  m 次
{m,}⾄少匹配  m 次
{m,n}⼀个精确地出现次数范围,m=<;出现次数<=n,'{m}'表⽰出现m次,'{m,}'表⽰⾄少出现m次。
[..]匹配⼀个可以是多个字符的排序规则元素。
[::]匹配字符类。
[==]匹配等价类。
\n n是1和9之间的数字。匹配在遇到\n之前在()中到的第n个⼦表达式。
\d匹配⼀个数字字符.
\D匹配⼀个⾮数字字符.
\w匹配包括下划线的任何单词字符.
\W匹配任何⾮单词字符.
\s任⼀空⽩字符,包括制表符,换⾏符,回车符,换页符和垂直制表符
\S匹配任何⾮空⽩字符.
\A前⾯的模式必须位于字符串的开始位置,忽略多⾏标志
\Z前⾯的模式必须位于字符串的未端,或者位于⼀个换⾏符前
*?与前前⾯的模式匹配零个或多个匹配项。
+?匹配前⾯⼀个模式⼀次或多次。
??匹配前⾯⼀个模式零或⼀个发⽣。
{n}?匹配前⾯的模式n次。
{n,}?与前⼀个模式匹配⾄少n次
{n,m}?与前⼀个模式匹配⾄少n次,但不超过m次。
2. oracle正则表达式的4个函数
  (1) regexp_like
    1) 语法
      REGEXP_LIKE ( expression, pattern [, match_parameter ] )
    2) 参数说明
      expression:字符表达式
      pattern:正则表达式
      match_parameter:可选的。它允许修改REGEXP_LIKE条件的匹配⾏为。它可以是以下的组合:
值描述
'c'执⾏区分⼤⼩写匹配。
'i'执⾏不区分⼤⼩写的匹配。
'n'允许句点字符(.)与换⾏符匹配。默认情况下,句点是通配符。
'm'表达式假定有多个⾏,其中^是⾏的开始,$是⾏的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单⾏。'x'忽略空格字符。默认情况下,空格字符与任何其他字符⼀样匹配。
    3) ⽰例
--与like的功能类似
select*from fzq where regexp_like(value,'1....60');
  (2) regexp_substr
    1) 语法
      regexp_substr(source_string,pattern[,position[,occurrence[,match_parameter]]])
    2) 参数说明
      source_string:源串,可以是常量,也可以是某个值类型为串的列。
      pattern:正则表达式
      position:从源串开始搜索的位置。默认为1。
      occurrence:指定源串中的第⼏次出现。默认值1.
      match_parameter:省略该参数时:默认区分⼤⼩写、句点不匹配换⾏符、源串被看作⼀⾏。
值说明
i'    ⽤于不区分⼤⼩写的匹配。
regexp likec'⽤于区分⼤⼩写的匹配。
n'允许将句点“.”作为通配符来匹配换⾏符。如果省略改参数,句点将不匹配换⾏符。
m' 将源串视为多⾏。即将“^”和“$”分别看做源串中任意位置任意⾏的开始和结束,⽽不
是看作整个源串的开始或结束。
    3) ⽰例
SELECT REGEXP_SUBSTR ('hello my phone is 520 ', '[0-9]+') FROM dual; --520
  (3) regexp_instr
    1) 语法
      regexp_instr(source_string,pattern[,position[,occurrence[,return_option[,match_parameter]]]])
    2) 参数说明
      source_string:源串,可以是常量,也可以是某个值类型为串的列。
      pattern:正则表达式
      position:可选。搜索在字符串中的开始位置。如果省略,则默认为1,这是字符串中的第⼀个位置。
      occurrence:可选。它是模式字符串中的第n个匹配位置。如果省略,默认为1。
      return_option:可选指定Oracle返回的位置。如果指定0,那么Oracle将返回出现的第⼀个字符的位置。这是默认的。如果指定1,则Oracle返回字符之后发⽣的位置。
      match_parameter:可选。它允许你修改REGEXP_INSTR功能匹配的⾏为。它可以是以下的组合:
值描述
'c'执⾏区分⼤⼩写匹配。
'i'执⾏不区分⼤⼩写的匹配。
'n'允许句点字符(.)与换⾏符匹配。默认情况下,句点是通配符。
'm'表达式假定有多个⾏,其中^是⾏的开始,$是⾏的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单⾏。
'x'忽略空格字符。默认情况下,空格字符与任何其他字符⼀样匹配。
    3) ⽰例
SELECT REGEXP_INSTR ('Itmyhome', 'a|i|o|e|u')
FROM dual;
-- Result: 6
  (4) regexp_replace
    1) 语法
      regexp_replace(source_string,pattern[,replace_string[,position[,occurrence[,match_parameter]]]])
    2) 参数说明
      source_string:源串,可以是常量,也可以是某个值类型为串的列。
      pattern:正则表达式
      replace_string:可选。匹配的模式将被替换replace_string字符串。如果省略replace_string参数,将删除所有匹配的模式,并返回结果字符串。
      position:可选。在字符串中的开始位置搜索。如果省略,则默认为1。
      occurrence:可选。是⼀个⾮负整数默认为1,指⽰替换操作的发⽣:如果指定0,那么所有出现将被替换字符串。如果指定了正整数n,那么将替换第n次出现。
      match_parameter:可选。它允许你修改REGEXP_REPLACE功能匹配的⾏为。它可以是以下的组合:
值描述
'c'执⾏区分⼤⼩写匹配。
'i'执⾏不区分⼤⼩写的匹配。
'n'允许句点字符(.)与换⾏符匹配。默认情况下,句点是通配符。
'm'表达式假定有多个⾏,其中^是⾏的开始,$是⾏的结尾,不管表达式中这些字符的位置如何。默认情况下,表达式假定为单⾏。
'x'忽略空格字符。默认情况下,空格字符与任何其他字符⼀样匹配。
    3) ⽰例   
SELECT REGEXP_REPLACE ('itmyhome is my network id', '^(\S*)', 'luck')
FROM dual;
Result: luck is my network id

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。