pandas和SQL数据分析实战

https://study.163.com/course/courseMain.htm?courseId=1006383008&share=2&shareId=400000000398149

举例

hive中 regexp_replace的用法,替换特殊字符问题

数据仓库中有的字段不合格,有特殊字符,比如换行符。

poi_name
\n19013
\n12013

怎么把换行符替换掉呢?

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-StringOperators

regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)

Returns the string resulting from replacing all substrings in INITIAL_STRING that match the java regular expression syntax defined in PATTERN with instances of REPLACEMENT. For example, regexp_replace("foobar", "oo|ar", "") returns 'fb.' Note that some care is necessary in using predefined character classes: using '\s' as the second argument will match the letter s; '\s' is necessary to match whitespace, etc.

官网说用两个反斜杠代替一个,即一个反斜杠用来转义。

实践了一下,不行,得4个

select regexp_replace(poi_name,'\\\\n','') poi_name
19013
12013

  

转自

https://blog.csdn.net/weixin_43767002/article/details/85605220

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm

regexp_replace函数是replace函数的扩展函数,用于通过正则表达式来进行匹配替换,默认情况下,每次匹配到的正则,都替换为replace_string,返回的字符串与source_char字符集相同。如果source_char为非LOB类型,则返回varchar2数据类型,如果为LOB类型,则返回CLOB类型,该函数符合POSIX正则和Unicode正则。

source_char是一个用作搜索的值,它通常是一种字符列,可以以下是任何数据类型CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、NCLOB

pattern是正则表达式,可以是以下任意数据类型CHAR、VARCHAR2、NCHAR、NVARCHAR2。最多可包含512个字节。如果pattern数据类型与source_char异同,则Oracle将转换pattern的数据类型与source_char的一致。

replace_string可以是以下任意数据类型CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、NCLOB。如果replace_string是CLOB或NCLOB,则Oracle截断replace_string为32K。replace_string可含有多达500个反向引用作为子表达式,其形式为\n,n为数字1~9。如果n在replace_string中为反斜线字符,则需使用转移字符在其前面(\)

position是一个正整数,表示在source_char中Oracle应该开始搜索的字符。默认值为1,表示Oracle以第一个字符开始搜索。

occurrence是一个非负整数,表示替换动作的发生,如果为0,则Oracle将替换所有匹配项,如果为正整数n,则Oracle将替换第n个匹配项。

match_parameter是一个文本文件,用于更改匹配行为,仅影响匹配过程,并不影响replace_string。可以指定以下一个或多个值:
‘i’指定不区分大小写的匹配
‘c’区分大小写的匹配
‘n’允许‘.’(句点,配置任意字符)匹配换行符,如果省略此此参数,则句点与换行符不匹配
‘m’将源字符串视为多行。Oracle将源字符串中的^或$视为行首或行尾,如果省略此参数,Oracle将源字符串视为单行
‘x’忽略空格字符。默认情况下,空白字符与自身匹配。
如果指定多个矛盾值,Oracle将使用最后一个值,例如指定’ic’,则Oracle使用区分大小写匹配,如果指定的不是上述字符,则返回错误
如果省略match_parameter,则:
1.默认的区分大小写由NLS_SORT参数的值决定
2.句点‘.’与换行符不匹配
3.源字符串视为单行

以上中文内容为本人自行翻译,仅供参考

实验:
以下开始通过实验验证各参数功能的使用
简单使用:
实验 1:

SQL> select regexp_replace('0123456789','01234','0abc') from dual;

实验 4:

SQL> select regexp_replace('+86 13811112222','(\+[0-9]{2})( )([0-9]{3})([0-9]{4})([0-9]{4})','(\1)\3-\4-\5') as new_str from dual;

  

附:正则表达式(POSIX标准扩展正则ERE)

符号 释义
\ 代表它自己、引用下一个字符、引入一个操作符、什么也不做
* 匹配零或多个
+ 匹配一个或多个
? 匹配零个或一个
| 或运算,其左右操作数均可以为一个子表达式
^ 默认情况下匹配字符串的结尾。在多行模式下,它匹配源字符串中任意位置的行尾
$ 默认情况下匹配字符串的开头。在多行模式下,它匹配源字符串中任意位置的行头
. 匹配字符集中支持的任意字符,NULL除外
[ ] 用于指定匹配列表的括号表达式
( ) 对表达式进行分组,将其视为单个子表达式
{m} 恰好匹配m次
{m,} 匹配至少m次
{m,n} 匹配至少m次,但不超过n次
\n 反向引用表达式(n为1~9)匹配在\n之前的圆括号内包含的第n个子表达式
[. .] 指定排序规则,可以是多字符元素(例如,西班牙语中的[.ch.])
[: :] 指定字符类(例如,[:alpha:]),它匹配字符类中的任何字符
[= =] 指定等价类。(例如,[=a=]匹配索引具有基本字母a的字符)
https://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_posix001.htm#BABJDBHB
以上资料来源于Oracle官网,由本人自行理解翻译,如若有误请指正

[: :]字符类:

[:xxxx:] 含义 范围
[:space:] 包括换行符、空格、tab在内的空白字符 tab、空格
[:blank:] 空格和tab tab、空格
[:alpha:] 字母 a-z、A-Z
[:alnum:] 字母和数字 a-z、A-Z、0-9
[:digit:] 十进制数 0-9
[:xdigit:] 十六进制数 0-9、a-f、A-F
[:lower:] 小写字母 a-z
[:upper:] 大写字母 A-Z
[:cntrl:] 控制字符 ctrl、backspace等
[:punct:] 标点符号 ,.?’

python机器学习-sklearn挖掘乳腺癌细胞( 博主亲自录制)

网易云观看地址

https://study.163.com/course/introduction.htm?courseId=1005269003&utm_campaign=commission&utm_source=cp-400000000398149&utm_medium=share

扫二维码,关注博主主页,学习更多Python知识

转载于:https://www.cnblogs.com/webRobot/p/11302005.html

regexp_replace相关推荐

  1. pgsql 筛选中文字符正则_postgresql varchar字段regexp_replace正则替换

    1.替换目标 1).contact字段类型 varchar. 2).去掉字段中连续的两个,每个等号后面数字不同,effective_caller_id_name=051066824513,effect ...

  2. Oracle中的正则表达式(REPLACE 和REGEXP_REPLACE)---转载自http://database.51cto.com/art/201009/228270.htm...

    REPLACE 函数是用另外一个值来替代串中的某个值.例如,可以用一个匹配数字来替代字母的每一次出现.REPLACE 的格式如下所示: REPLACE ( char, search_string [, ...

  3. Oracle正则表达式函数:regexp_like、regexp_substr、regexp_instr、regexp_replace

    Oracle正则表达式函数:regexp_like.regexp_substr.regexp_instr.regexp_replace Oracle使用正则表达式离不开这4个函数: 1.regexp_ ...

  4. 你真的会用 regexp_replace 吗?

    一.替换单个 方法1:select regexp_replace('asdgggg','([asd])',"aaa") 方法2:select regexp_replace('asd ...

  5. 正则表达式 REGEXP_REPLACE

    regexp_replace(srcstr => ,pattern => ,replacestr => ,position => ,occurrence => ,modi ...

  6. REGEXP_REPLACE 函数

    REGEXP_REPLACE 函数 让我们首先看一下传统的 REPLACE SQL 函数,它把一个字符串用另一个字符串来替换.假设您的数据在正文中有不必要的空格,您希望用单个空格来替换它们.利用 RE ...

  7. Oracle学习笔记:使用replace、regexp_replace实现字符替换、姓名脱敏

    在数据库中难免会遇到需要对数据进行脱敏的操作,无论是姓名,还是身份证号. 最近遇到一个需求,需要对姓名进行脱敏: 姓名长度为2,替换为姓+*: 姓名长度为3,替换中间字符为*: 姓名长度为4,替换第3 ...

  8. Hive正则表达式regexp_replace,截取后提取_汉字_字母_数字

    Hive regexp_replace函数 建表 插入测试数据 从字符串中按截取长度提取 汉字/数字/字母. 截取字符串中的汉字"汤姆Tom123那That个456猫Cat789" ...

  9. hive正则匹配:regexp_replace、regexp_extract、regexp

    hive正则匹配:regexp_replace.regexp_extract.regexp 一.regexp语法介绍 regexp 语法: A REGEXP B 操作类型: strings 描述: 功 ...

最新文章

  1. 大数据入门基础教程系列
  2. ajax请求后台表格数据,商品后台表格数据的展现方式
  3. 006python路--深浅拷贝
  4. 关系的三类完整性约束
  5. 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程
  6. C# 实现连连看功能
  7. 薪酬与工作满意度大调查:数据科学家还是21世纪最性感的职业吗?
  8. python一对一视频教学-使用Python的Tornado框架实现一个一对一聊天的程序
  9. Vb6 Modbus TCP通讯示例源代码
  10. ms17-010 php版本,MS17-010补丁360版
  11. iTunes历史各个版本下载地址
  12. 服务器组态文件己写保护,组态王常见问题集锦(一)
  13. CC2530采集重力加速度MMA7455的值
  14. SylixOS -- 网卡驱动浅析
  15. Python+selenium实现Drcom校园网自动检测网络以及自动登录
  16. 大部分有高学历的人比低学历的人强
  17. ifconfig command not found
  18. maven(视频学习)
  19. Unity UI Text组件添加contentsizefitter后获取RectTransform宽度
  20. supervisor 介绍,启动uwsgi失败,端口被占用

热门文章

  1. 初入react.js
  2. 跳棋游戏利用树构建合法路径出现循环的解决办法
  3. java中这些判断空的用法,太优雅了
  4. Qt之JSON教程-实战篇
  5. POJ-2112 Optimal Milking 二分+网络流
  6. 英雄之刃显示服务器断开怎么办,常见问题_07073英魂之刃网页游戏官网
  7. 英伟达发布526.98 WHQL 显卡驱动,支持RTX 4080,三款即将上线游戏
  8. 《C Primer Plus》5.11 编程练习
  9. The default interactive shell is now zsh.
  10. [转帖]P2P流媒体