oracle正则表达式实例详解

按断线形式开发要求:线后拆分应定期进行,并按排序水平进行排序。

需求分析如下:



现有线路:2、2.1、2.2、2.33

2.1.1、2.1.2、2.1.3,2.2.1,2.1.1.1,2.1.1.2,

2个分裂的结果应该是2.4(2.4是通过查看历史在2年初,用小数点,小数点后的最大值,最大值+ 1得到,新后缀,分辨率是按照顺序增加)。

分辨率达到2.1应该是:2.1.4首先要确保各分一排多个小数点。



为2.1分,最高的后缀比较对象应符合2.1的前缀,只有两个小数点(不包括前缀号码是不重合的情况:2.1.1.1,2.1.1.2一致)。

没有3的历史记录是3年初,当分裂重新开始时,应该是3.1。

这里的关键是匹配历史记录,并在分割之后确定最后一个记录的最大值。

匹配时不能判断数字的个数,因为数字可能是两位数字和三位数字,应该根据小数点来判断。

该匹配用于正则表达式:



与PHP和Python一样,Oracle的正则表达式函数主要由四个功能实现:相似性匹配、位置查找、获取匹配子字符串和替换匹配结果。

(1)相似匹配:regexp_like()

正则表达式(source_str,模式,match_parameter)

第一个参数:原始字符串、第二个参数匹配模式和第三个参数匹配选项。

第三个参数匹配选项在这些函数中是相似的(可选)



常见的:我:不区分大小写的;C:敏感;N:点不匹配换行符;

M:多行模式;X:扩展模式,忽略了在正则表达式中的空白字符。



匹配成功返回true失败返回false

我使用:



如果regexp_like(del_line_number,^ D * D * D * $)然后--数字只有两个小数点匹配,字符串

模式中的符号显示模式需要用一对双引号括起来。

标记字符串的开头,$标记字符串的结尾。

◎D匹配0-9号*号前面的字符0次或更多的比赛

匹配.一个点,因为有其他的意思,以便逃跑。

(2)找到的字符的位置:regexp_instr()


regexp_instr(source_string,格局,位置,发生,return_option,match_parameter)
source_string:输入的字符串
模式:正则表达式
位置:从多个字符中识别正则表达式的匹配(默认值为1)。
发生:标识若干匹配组。(默认值为1)
return_option:0返回第一个字符的位置。1:模式的起始位置的下一个字符。
match_parameter:匹配模式


前两个字段必须丢失:


regexp_instr()

选择
STR,
regexp_instr(STR,IND,)默认从第一个字符开始查找,找到第一个数。你也可以匹配条件,满足字符串的要求,并且写上匹配的格式不能是单个字符。
regexp_instr(STR,,IND,1,2)从第一个字符开始的第二搜索,定位。
regexp_instr(STR,,5)股份从第五字开始,第二搜索。这个位置,注意最后找到字符和字符串的位置是相对于搜索字符串的起始位置。
fromtmp id是'instr;
工业指数
这个
192.168.0.1 4810







选择
regexp_instr('192.168.0.1、。,1,工业级)-时期的位置。
regexp_instr('192.168.0.1 '、' D,1级)工业--每个数字的位置
fromdual
connectbylevel连续9场的目标字符串中第一次出现的位置,第二位置,直到第九的地方
工业工业
----------
四十一
八十二
一百零三
05
06
07
09
011 -第八个数字位于11位,其中没有第九个数字,不匹配,返回地址是0。
00 -返回没有匹配的0,第一个从1开始,而不是0。






我的情况:

v_position_bit:= regexp_instr(rec_data。del_line_number,,1;2)-二位数,减一

substr(del_line_number,1,v_position_bit)-获取第二小数点的子串的字符串

(3)得到一个配子字符串:regexp_substr()

regexp_substr(source_string,格局,位置,发生,match_parameter)

regexp_substr()在最初的目的是形成一个字符串数组,根据字符串中的字符。

例如:192.168.233.23点,的最终结果:19216823323包四

注意,模式的格式不仅包含在圆括号中,而且还包含在括号中。

我的情况:


regexp_substr(del_line_number,{ ^。} +,1,1)前缀匹配相同的第一个小数点前的性格


选择
STR,
regexp_substr(STR,{ } ^,+)STR,
regexp_substr(STR,{ },^,STR,1,1)从第一个开始,获得一个逗号分隔的字符串后,第一个字符串的分割
regexp_substr(STR,{ },^,STR,1,2)-在几个匹配组发生
regexp_substr(STR,{ } ^,+,2,1)- STR位置,从第几个字符开始
fromtmp
whereid = 'substr;
STR
---------------------------------------------------------------------------
123234345123123234 23
12,34.56:78 1212 34.56:78 2
123456789123456789 123456789个逗号不存在第二个23456789(从除法之后的第二个,而不是整个)。




(4)更换匹配的结果:regexp_replace()


选择
STR,
regexp_replace(STR,'020 ','gz ')STR,
regexp_replace(STR,'( D { 3 })( D { 3 }),STR)-第一和第二尖括号捕捉组交换位置
fromtmp
whereid =替换;
STR STR STR
---------------------------------------------
(020)12345678(广州)12345678(020)78
001517729c28 001517729c28 729c28




谢谢你的阅读。我希望你能帮助你,谢谢你对这个站的支持。