正则表达式regexp_replace的使用方法

目录
  • 前言
  • 常用案例
  • 总结

前言

regexp_replace的使用非常灵活,且容易忘记,故做此笔记。 没有过多的介绍使用说明,只是根据个人理解列出很多相似案例,个人觉得通过对比,更容易理解几个参数的使用技巧。

所有案例均是实跑出来的结果。

带颜色的部分是需要留意的地方。

命令格式:

regexp_replace(source, pattern, replace_string, occurrence)

参数说明:

● source: string类型,要替换的原始字符串。

● pattern: string类型常量,要匹配的正则模式,pattern为空串时抛异常。

● replace_string:string,将匹配的pattern替换成的字符串。

● occurrence: bigint类型常量,必须大于等于0,

大于0:表示将第几次匹配替换成replace_string,

等于0:表示替换掉所有的匹配子串。

其它类型或小于0抛异常。

返回值:

将source字符串中匹配pattern的子串替换成指定字符串后返回,当输入source, pattern, occurrence参数为NULL时返回NULL,若replace_string为NULL且pattern有匹配,返回NULL,replace_string为NULL但pattern不匹配,则返回原串。

常用案例

1、用’#‘替换字符串中的所有数字

SELECT regexp_replace('01234abcde56789','[0-9]','#') AS new_str FROM dual;

结果:#####abcde#####

用’#‘替换字符串中的数字0、9

SELECT regexp_replace(‘01234abcde56789','[09]','#') AS new_str FROM dual;

结果:#1234abcde5678#

2、遇到小写字母或者数字跳过,从匹配到的第4个值开始替换,替换为''

SELECT regexp_replace('abcdefg123456ABC','[a-z0-9]','',4)

结果:abcefg123456ABC

SELECT regexp_replace('abcDEfg123456ABC','[a-z0-9]','',4)

结果:abcDEg123456ABC

SELECT regexp_replace('abcDEfg123456ABC','[a-z0-9]','',7);

结果:abcDEfg13456ABC

遇到非小写字母或者数字跳过,将所有匹配到的值替换为''

SELECT regexp_replace('abcDefg123456ABC','[a-z0-9]','',0);

结果:DABC

3、格式化手机号,将+86 13811112222转换为(+86) 138-1111-2222,’+‘在正则表达式中有定义,需要转义。\\1表示引用的第一个组
SELECT regexp_replace('+86 13811112222','(\\+[0-9]{2})( )([0-9]{3})([0-9]{4})([0-9]{4})','(\\1)\\3-\\4-\\5',0);

结果:(+86)138-1111-2222

SELECT regexp_replace("123.456.7890","([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})","(\\1)\\2-\\3",0) ;
SELECT regexp_replace("123.456.7890","([0-9]{3})\\.([0-9]{3})\\.([0-9]{4})","(\\1)\\2-\\3",0) ;

结果:(123)456-7890

4、将字符用空格分隔开,0表示替换掉所有的匹配子串。

      SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',0) AS new_str FROM dual;

结果:a b c d e f g 1 2 3 4 5 6 A B C

      SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',2) AS new_str FROM dual;

结果:ab cdefg123456ABC

5、

SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) ;

结果:abc

SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) ;

结果:d

SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) ;

结果:abc-d

其他案例:

SELECT regexp_replace("abcd","(.)","\\2",1) 结果为"abcd",因为pattern中只定义了一个组,引用的第二个组不存在。
SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) 结果为"d"
SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) 结果为"abc"
SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) 结果为"abc-d"
SELECT regexp_replace("abcd","a","\\1",0),结果为” \1bcd”,因为在pattern中没有组的定义,所以\1直接输出为字符。

正则符号释义:

总结

到此这篇关于正则表达式regexp_replace使用的文章就介绍到这了,更多相关regexp_replace使用方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 使用正则表达式(regex_replace)模拟读取INI文件

    废话不多说了,直接给大家贴代码了,具体代码如下所示: #include "stdio.h" #include <sstream> #include <iostream> #include <fstream> #include <regex> using namespace std; void Trim(char * str); void lTrim(char * str); void rTrim(char * str); // 测试ssc

  • 正则表达式regexp_replace的使用方法

    目录 前言 常用案例 总结 前言 regexp_replace的使用非常灵活,且容易忘记,故做此笔记. 没有过多的介绍使用说明,只是根据个人理解列出很多相似案例,个人觉得通过对比,更容易理解几个参数的使用技巧. 所有案例均是实跑出来的结果. 带颜色的部分是需要留意的地方. 命令格式: regexp_replace(source, pattern, replace_string, occurrence) 参数说明: ● source: string类型,要替换的原始字符串. ● pattern:

  • 使用正则表达式屏蔽关键字的方法

    [问题]关键字屏蔽是社交类软件必做的功能,当然了,一般来讲都是产品的中后期来做:不同产品规定不一样,跟着产品运营走,可以的 [方法]我们从技术的角度来看到这个问题,实现一个功能后者说实现一个需求,其方法是多种多样的,重点是找到适合我们当下产品的:比如:我们可以在后端进行数据处理之后,传递到前端:也可以在前端进行数据处理:这里我们要说的就是前端的JS处理方法,后端的php处理方法 [JS方法] // 进行屏蔽的文字 var str = '小丽.小明和小红是校长的学生:在这个小家庭里面,校长就是我们

  • 正则表达式截取字符串的方法技巧

    有这么一段字符串: [数字]字符串 结果 取  a=数字 b=字符串 截取方法1: int a = Convert.ToInt32(txt1.Text.Trim().Replace('[', ']').Split(']')[1]); string b = txt1.Text.Trim().Replace('[', ']').Split(']')[2]; 截取方法2: string str = "[数字]字符串"; Regex reg = new Regex(@" ([^]+)

  • Python使用正则表达式实现文本替换的方法

    本文实例讲述了Python使用正则表达式实现文本替换的方法.分享给大家供大家参考,具体如下: 2D客户端编程从某种意义上来讲就是素材组织,所以,图片素材组织经常需要批量处理,python一定是最佳选择,不管是win/linux/mac都有一个简单的运行环境 举两个应用场景: ① 如果不是在某个文件夹里面则将文件夹名称插入前面 ② 所有的文件名名称加上一个前缀 直接看代码吧: # encoding: UTF-8 import re # 将正则表达式编译成Pattern对象 p = re.compi

  • SQL Server中利用正则表达式替换字符串的方法

    建立正则替换函数,利用了OLE对象,以下是函数代码: --如果存在则删除原有函数 IF OBJECT_ID(N'dbo.RegexReplace') IS NOT NULL DROP FUNCTION dbo.RegexReplace GO --开始创建正则替换函数 CREATE FUNCTION dbo.RegexReplace ( @string VARCHAR(MAX), --被替换的字符串 @pattern VARCHAR(255), --替换模板 @replacestr VARCHAR

  • Java正则表达式提取字符的方法实例

    正好遇到一个需求需要将字符串中特定的字符全部提取出来,这个如果是按常规的字符串处理的话非常的繁琐.于是想到用正则表达式来完成.项目需求是这样的:需要提取车牌号中最后一个数字,比如说:苏A7865提取5,苏A876X提取6 实现方法: import java.util.regex.Matcher; import java.util.regex.Pattern; public class Test { public static void main(String[] args) { String s

  • 正则表达式模式匹配的String方法

    在JavaScript代码中使用正则表达式进行模式匹配经常会用到String对象和RegExp对象的一些方法,例如replace.match.search等方法,以下是对一些方法使用的总结. String对象中支持正则表达式有4种方法,分别是:search.replace.match.split str.search(regexp) 定义:search()方法将在字符串str中检索与表达式regexp相匹配的字串,并且返回第一个匹配字串的第一个字符的位置.如果没有找到任何匹配的字串,则返回-1.

  • java使用正则表达式判断手机号的方法示例

    本文实例讲述了java使用正则表达式判断手机号的方法.分享给大家供大家参考,具体如下: 要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经开放了多少个号码段,国家号码段分配如下: 移动:134.135.136.137.138.139.150.151.157(TD).158.159.187.188 联通:130.131.132.152.155.156.185.186 电信:133.153.180.189.(1349卫通) 那么现在就可以正则匹

  • ES6学习笔记之正则表达式和字符串正则方法分析

    本文实例讲述了ES6正则表达式和字符串正则方法.分享给大家供大家参考,具体如下: RegExp构造函数 在ES5中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = new RegExp('xyz', 'i'); // 等价于 var regex = /xyz/i; 第二种情况是,参数是一个正则表示式,这时会返回一个原有正则表达式的拷贝. var regex = new RegExp(/xyz/i);

  • Python通过正则表达式选取callback的方法

    本文实例讲述了Python通过正则表达式选取callback的方法.分享给大家供大家参考.具体如下: 最近在瞎想怎么通过xpath去精确抓取文章的正文,跟parselets类似的想法,只不过更简单. 代码设计上采用正则表达式匹配URL,再选择callback handler的方式,主要参考web.py的分发器(Dispatcher). 当然,这个实现比较老土一些,全部用function的方式回调,没有用类. #!/bin/env python import re, sys # Define pa

随机推荐