前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[1173]regexp_replace()、regexp_substr()、regexp_instr()函数的用法

[1173]regexp_replace()、regexp_substr()、regexp_instr()函数的用法

作者头像
周小董
发布于 2023-10-10 00:25:32
发布于 2023-10-10 00:25:32
1.3K01
代码可运行
举报
文章被收录于专栏:python前行者python前行者
运行总次数:1
代码可运行

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、用#替换字符串中的所有数字

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('01234abcde56789','[0-9]','#');

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('01234abcde56789','[09]','#');

结果:#1234abcde5678#

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('abcdefg123456ABC','[a-z0-9]','',4)

结果:abcefg123456ABC

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('abcDEfg123456ABC','[a-z0-9]','',4)

结果:abcDEg123456ABC

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('abcDEfg123456ABC','[a-z0-9]','',7);

结果:abcDEfg13456ABC

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('abcDefg123456ABC','[a-z0-9]','',0);

结果:DABC

3、格式化手机号,将+86 13811112222转换为(+86) 138-1111-2222,+在正则表达式中有定义,需要转义。\\1表示引用的第一个组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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表示替换掉所有的匹配子串。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',2) AS new_str FROM dual;

结果:ab cdefg123456ABC

5、

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) ;

结果:abc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) ;

结果:d

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) ;

结果:abc-d

其他案例
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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_substr()函数的用法

在SQL中尝试使用正则,可以试下regexp_substr()来进行分割

1.首先创建一个实验视图:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL>

create or replace view test_ip as select '192.168.1.1' as ip from dual
 union all
select '192.168.1.2' as  ip from dual 
union all 
select '192.168.1.3' as  ip from dual
union all
select '192.168.1.4' as  ip from dual;

2.查看下视图的整体结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SQL> select * from test_ip;

IP
-----------
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4

3.实例 (1)现在有一个需求,需要将这些ip以“.”为分隔符,分段显示ip 最终效果如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IP1                    IP2                    IP3                    IP4
---------------------- ---------------------- ---------------------- -----
192                    168                    1                      1
192                    168                    1                      2
192                    168                    1                      3
192                    168                    1                      4

执行的SQL如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select regexp_substr(a.ip, '[^.]+', 1, 1) ip1,
regexp_substr(a.ip, '[^.]+', 1, 2) ip2,
regexp_substr(a.ip, '[^.]+', 1, 3) ip3,
regexp_substr(a.ip, '[^.]+', 1, 4) ip4 from test_ip a;

分析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
regexp_substr()括号中的
[^.]   -->代表除了“.”以外的全部字段
+      -->表示匹配1次以上
1      -->表示从第一个“.”开始
2      -->表示匹配到的第二个字段

这样就能达到这个效果

regexp_instr()函数的用法

MySQL 中, REGEXP_INSTR() 函数返回与正则表达式模式匹配的子字符串的起始索引。

索引从 1 开始。如果不匹配,则返回 0。

语法如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
REGEXP_INSTR(expr, pat[, pos[, occurrence[, return_option[, match_type]]]])
  • expr 为源字符串,pat 为正则表达式。
  • pos 为可选参数,标识开始匹配的位置,默认为1。
  • occurrence 为可选参数,标识匹配的次数,默认为 1。
  • return_option 为可选参数,指定返回值的类型。如果为 0,则返回匹配的第一个字符的位置。如果为 1,则返回匹配的最后一个位置,默认为 0。
  • match_type 为可选参数,允许优化正则表达式。例如,可以使用此参数指定是否区分大小写。
示例 1 – 基本用法

基本示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT REGEXP_INSTR('Cat', 'at') Result;

结果:

+--------+

| Result |

+--------+

| 2 |

+--------+

子字符串从位置 2 开始存在匹配项。

示例 2 – 不匹配

不匹配的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT REGEXP_INSTR('Cat', '^at') Result;

结果:

+--------+

| Result |

+--------+

| 0 |

+--------+

没有匹配项,因为指定字符串必须从子字符串开始,结果返回 0。

让我们把它改为 该子字符串开头 :

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT REGEXP_INSTR('at', '^at') Result;

结果:

+--------+

| Result |

+--------+

| 1 |

+--------+
示例 3 – 参数 pos

指定开始位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT REGEXP_INSTR('Cat Cat', 'Cat', 2) Result;

结果:

+--------+

| Result |

+--------+

| 5 |

+--------+

我们得到了第二次出现的索引。

请注意,无论在哪里指定起始位置,索引都将从位置 1 开始计数。

以下示例更加清楚地说明了这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat Cat', 'Cat', 2) AS 'Pos 2',

REGEXP_INSTR('Cat Cat', 'Cat', 3) AS 'Pos 3',

REGEXP_INSTR('Cat Cat', 'Cat', 5) AS 'Pos 5';

结果:

+-------+-------+-------+

| Pos 2 | Pos 3 | Pos 5 |

+-------+-------+-------+

| 5 | 5 | 5 |

+-------+-------+-------+

当然,根据您的正则表达式模式,可以返回完全不同的子字符串的索引。例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1) 'Pos 1',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 2) 'Pos 2',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 6) 'Pos 6';

结果:

+-------+-------+-------+

| Pos 1 | Pos 2 | Pos 6 |

+-------+-------+-------+

| 1 | 5 | 16 |

+-------+-------+-------+

我们可以使用 REGEXP_SUBSTR() 函数检查子字符串:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_SUBSTR('Cat City is SO Cute!', 'C.t', 1) 'Pos 1',

REGEXP_SUBSTR('Cat City is SO Cute!', 'C.t', 2) 'Pos 2',

REGEXP_SUBSTR('Cat City is SO Cute!', 'C.t', 6) 'Pos 6';

结果:

+-------+-------+-------+

| Pos 1 | Pos 2 | Pos 6 |

+-------+-------+-------+

| Cat | Cit | Cut |

+-------+-------+-------+
示例 4 – 参数 occurrence

这是使用参数 occurrence 的示例。在所有情况下,我们都从位置 1开始:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 1) 'Occurrence 1',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 2) 'Occurrence 2',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 3) 'Occurrence 3';

结果:

+--------------+--------------+--------------+

| Occurrence 1 | Occurrence 2 | Occurrence 3 |

+--------------+--------------+--------------+

| 1 | 5 | 16 |

+--------------+--------------+--------------+

但是,如果我们从不同位置开始,结果将会有所不同:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 2, 1) 'Occurrence 1',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 2, 2) 'Occurrence 2',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 2, 3) 'Occurrence 3';

结果:

+--------------+--------------+--------------+

| Occurrence 1 | Occurrence 2 | Occurrence 3 |

+--------------+--------------+--------------+

| 5 | 16 | 0 |

+--------------+--------------+--------------+

发生这种情况是因为我们的起始位置是在第一次出现之后开始的。因此,2 次匹配变成 1 次匹配的结果,3 次匹配变成 2 次匹配的结果。并且由于不存在更多的次数,因此 3 次匹配的结果为零(即没有达到 3 次匹配)。

示例 5 – 参数 return_option

以下是使用参数 return_option 的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 1, 0) 'Option 0',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 1, 1) 'Option 1';

结果:

+----------+----------+

| Option 0 | Option 1 |

+----------+----------+

| 1 | 4 |

+----------+----------+

Option 0 返回了匹配的第一个字符的位置。Option 1 返回了匹配之后的位置。

如果将其应用于上一个示例,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 1, 0) 'Occurrence 1',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 2, 0) 'Occurrence 2',

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 3, 0) 'Occurrence 3'

UNION ALL

SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 1, 1),

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 2, 1),

REGEXP_INSTR('Cat City is SO Cute!', 'C.t', 1, 3, 1);

结果:

+--------------+--------------+--------------+

| Occurrence 1 | Occurrence 2 | Occurrence 3 |

+--------------+--------------+--------------+

| 1 | 5 | 16 |

| 4 | 8 | 19 |

+--------------+--------------+--------------+

在这种情况下,我们使用 Option 0 设置了一组,使用 Option 1 设置了一组,然后使用 UNION ALL 将它们连接在一起。

示例 6 – 参数 match_type

您可以使用其他参数来确定匹配类型。可以指定诸如匹配是否区分大小写,是否包括行终止符之类的内容。

这是指定区分大小写的匹配和不区分大小写的匹配的示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT

REGEXP_INSTR('Cat City is SO Cute!', 'c.t', 1, 1, 0, 'c') 'Case-Sensitive',

REGEXP_INSTR('Cat City is SO Cute!', 'c.t', 1, 1, 0, 'i') 'Case-Insensitive';

结果:

+----------------+------------------+

| Case-Sensitive | Case-Insensitive |

+----------------+------------------+

| 0 | 1 |

+----------------+------------------+

参数 match_type 可以包含以下字符:

c:匹配区分大小写。 i:匹配不区分大小写。 m:多行模式,识别字符串中的行终止符,默认是仅在字符串表达式的开头和结尾匹配行终止符。 n:与 . 行终止符匹配。 u:仅匹配 Unix 的行结尾。只有换行符被识别为以 ., ^ 和 $ 结尾的行。

参考:https://blog.csdn.net/JohnnyChu/article/details/111184962 https://blog.csdn.net/boos_zhao/article/details/121470300 https://blog.csdn.net/weixin_30438795/article/details/113254243

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-12-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
如何将flash制作的动画存成高质量的GIF
喜欢用flash制作GIF动画的同学有个疑惑就是flash直接导出的GIF质量不高无法达到我们对动画的色彩要求,所以下面教大家如何将flash制作的动画存成高质量的GIF 1、 在flash里选择“导出影片” 2、 选择“PNG序列” 3、 弹出导出png面版 4、 打开photoshop,选文件-脚本-将文件载入堆栈,之前的序列图片就会按顺序出现在层里 5、 打开时间轴面板,在右上角的菜单中选择“从图层建立帧” 6、 此时的动画方向是反向的。时间轴菜单里点选“反向帧”
用户1730674
2018/05/02
1.7K0
如何将flash制作的动画存成高质量的GIF
是的!Figma也可以用时间轴做超级流畅的动画了
静电说:继昨天我们发布了Figma下的一款超神奇的抠图插件后,今天静电再次为大家带来一款Motion插件,它可以在Figma中做帧动画。在通常情况下,Figma中是没有时间轴的,因此只能使用Smart Animate做一些补间过渡动画,而要做一些更流畅且具有更多细节的动画,Figma则显得有点无奈。不过没关系,今天,我们为大家介绍使用Motion插件在Figma中来完成超流畅动画的案例。一起来看Pavel Babkin的这篇文章。
用户5009027
2021/03/15
21.1K0
是的!Figma也可以用时间轴做超级流畅的动画了
Ps图像处理:Photoshop 2023
Photoshop 2023是一款功能强大的图像处理软件,Photoshop 2023可以让摄影师对照片进行后期调整、修复和优化,以获得最佳效果。 是许多设计师创建海报、插图、广告和其他视觉设计作品的首选软件。可以让美术家创建数字绘画作品,并进行各种颜色和纹理效果的调整。 Photoshop 可以用来创建和编辑网站的图像和图标。 Photoshop 可以用来创建广告素材和商业宣传品,如海报、杂志广告和电视广告等。利用Photoshop 软件在桌面上的强大功能,您可以在灵感来袭时随时随地进行创作。
用户10520003
2023/04/21
1.1K0
SketchBook Pro2021激活版SketchBook2022免费版SketchBook2023下载安装教程
AutodeskSketchBook Pro 2021是一款专业的数码画画插图软件,它拥有一个极其优美的界面,可以在每个设备上最大化地显示空间,让用户可以享受到出色的绘画体验。这款软件是专门为平板电脑或手写笔写板设计的,提供专业水平的绘图和插图工具,并配有丰富的命令选项、参数,提供灵活高效的插图设计和绘图功能,干净整洁的软件环境,友好的图形界面,可以快速地找到您所需要的工具,涵盖从简单的草图到最终精美插图的所有工具,可以帮助用户自由地发挥自己的想象力,在进行绘画创作时,还有超多类型的可自定义笔刷,综合的纹理和形状,流畅的笔触和精确度以及速度,让这款软件独具优势!
知识兔
2022/10/22
1.3K0
使用Photoshop画一个圆锥体
一、准备工作 软件环境:PhotoshopCS6 实验目的:通过运用变换和选区工具,画出一个圆锥体 二、实验步骤 1,新建文件 2,前景色设置为黑色,并进行填充(快捷键 Alt+Delete) 3,创
Zoctopus
2018/06/04
9450
CorelDRAW 2019 软件应用项目(一)
今天我们聊聊 cdr 这个绘制矢量图的软件,这个软件是我最近才接触到的,一个和 AI 一样,能够制作矢量图的软件,并且学习它的一个非常重要的绘制曲线的功能。
设计者
2022/12/20
1.2K0
CorelDRAW 2019 软件应用项目(一)
Macromedia flash制作落叶飘下动画
2.选中引导层,在左侧工具栏中设置笔触颜色为黄色,填充颜色为无,在舞台上绘制一条路径。并锁定引导层。
全栈程序员站长
2022/08/18
1.5K0
Macromedia flash制作落叶飘下动画
PS制作GIF
昨天写了篇博客,是关于CSS实现图片旋转的,群里的小伙伴跟我说博客里看不到效果让我做个GIF。。。那我今天就来写篇如何用PhotoShop制作GIF
阿超
2022/08/16
1.5K0
PS制作GIF
如何用Scratch 3绘制矢量图形 【Gaming】
Scratch是一种流行的用于创建视频游戏和动画的可视化编程语言。它还具有矢量绘图工具,任何人都可以使用它来创建独特的游戏和艺术。
五月Rambo
2019/11/10
5.8K0
如何用Scratch 3绘制矢量图形 【Gaming】
「图层基础知识」Photoshop 图层面板概述
Photoshop 中的“图层”面板列出了图像中的所有图层、图层组和图层效果。可以使用“图层”面板来显示和隐藏图层、创建新图层以及处理图层组。可以在“图层”面板菜单中访问其他命令和选项。
IT胶囊
2021/05/28
1.4K0
《边学边做Photoshop图像制作案例教程》
3.单击“矩形选框工具”-绘制-编辑-按<Alt+Delete>键-按<Ctrl+D>键
裴来凡
2022/05/29
5650
《边学边做Photoshop图像制作案例教程》
PhotoShop制作gif动态广告效果示例
6. 复制第二个图层“米扑2”为“米扑3”,输入文字“米扑科技公司”,调节字体颜色
阳光岛主
2019/02/18
1.9K0
PhotoShop制作gif动态广告效果示例
Photoshop软件应用项目(一)
今天我们在 PS 软件上,制作一个简单的帧动画,方便以后和 Flash 动画效果,做对比,我们会多做几个案例,更加熟练的掌握 PS 帧动画原理,这样在接触 flash 动画时,就能够很明显的区分两个软件在动图领域的优缺点。
设计者
2022/12/20
8210
Photoshop软件应用项目(一)
数据可视化之下发图实践
随着互联网的快速发展,数据维度越来越广,呈现形式也越发丰富,具有多维度数据特点的相关业务实践都能通过可视化图表来展示,比如个推的下发图,从时间和区域两个维度,可以即时、直观地展现个推数据下发的过程。
个推
2019/04/18
9210
数据可视化之下发图实践
Android 自定义标签 ViewLayout
自定义viewLayout实现标签View,UI的效果图如下: 如图,我们要自己实现带描边的,带花括号的,带三角形,带对勾的这样一个layout ,并且对勾和中间的虚线我们都要用最基础的API绘制出
非著名程序员
2018/02/02
1.3K0
Android 自定义标签 ViewLayout
Photoshop软件2020软件下载安装教程-PS全版本最新版本软件安装包
Photoshop软件是一款非常强大的图像处理软件,可以帮助用户进行各种图片处理、编辑、设计等工作。
用户8187027
2023/04/08
5050
html遮罩层动画制作,flash简单制作遮罩动画效果[通俗易懂]
flash简单制作遮罩动画效果QQ空间的开机动画大家应该都有,从最初的出现的一点到后面全部出现,如此神奇的效果到底是怎么做的呢,一起来看看吧!遮罩特效: 由于百度只能上传500k以内的照片,所以效果图片质量不是很好,当然,我们一般做的特效是.swf,这里是为了方便大家观看,所以做成了gif.
全栈程序员站长
2022/08/14
3.7K0
html遮罩层动画制作,flash简单制作遮罩动画效果[通俗易懂]
【01】AE特效开发制作特技-Adobe After Effects-AE特效制作快速入门-制作飞机,子弹,爆炸特效以及导出png序列图-优雅草央千澈
优雅草央千澈所有的合集,系列文章可能是不太适合完全初学者的,因为课程不会非常细致的系统的去教一些很基础不过的东西,这种需要系统学习的同学建议需要去看很详细的几十集,几百集课程的那种,央央的博文以及内容分享是针对于有一定计算机基础,而且有一定的编程能力的同学,并且是学习能力会比较强的观看比较适宜,因为有些地方是比较跳跃的,但是针对有一定基础的同学没问题,零基础可能会卡在某些很小的问题地方,不过这些都不是事,只要你愿意努力学习,我相信都是小问题,而且不是还可以评论吗?
卓伊凡
2025/01/11
2110
大学课程 | 计算机图形学,基于MFC和二维变换的画图软件
本文描述了二维复合变换的基本方法和思想,根据鼠标位置坐标获取起始点pStart和终止点pEnd的坐标,设计实现每个基本图形的画图方法,根据pStart和pEnd即可确定基本图形的控制点,进而绘制对应图形。规范化齐次坐标以后,图形几何变换可以表示为图形控制点点集合的规范化齐次坐标矩阵与二维变换矩阵相乘的形式,分别设置二维变换矩阵的参数信息,设计实现对应的方法,即可实现图形的二维变换功能。
Justlovesmile
2021/12/14
2.5K0
大学课程 | 计算机图形学,基于MFC和二维变换的画图软件
Building a clean model tutorial
本教程将逐步指导您构建机器人或任何其他物品的清晰仿真模型。这是一个非常重要的课题,为了有一个漂亮的外观,快速显示,快速模拟和稳定的仿真模型。
六四零
2020/08/04
1.4K0
推荐阅读
相关推荐
如何将flash制作的动画存成高质量的GIF
更多 >
LV.1
这个人很懒,什么都没有留下~
目录
  • REGEXP_REPLACE的使用方法
    • 参数说明
    • 返回值
    • 常用案例
    • 其他案例
    • 正则符号释义
  • regexp_substr()函数的用法
  • regexp_instr()函数的用法
    • 语法如下
    • 示例 1 – 基本用法
    • 示例 2 – 不匹配
    • 示例 3 – 参数 pos
    • 示例 4 – 参数 occurrence
    • 示例 5 – 参数 return_option
    • 示例 6 – 参数 match_type
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档