暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

正则案例四:清空()里面的内容

原创 只是甲 2021-06-30
495

一.需求

今天在论坛上看到有人提了一个正则相关的问题,刚好有时间,就给他提供了一个解决方案。

需求如下:
字符串:‘我爱(xxx)中华(qq)人民(aac啊)共和国’
想达到的效果,凡是()中的内容都不需要了,包括()本身,以上字符串希望返回结果:我爱中华人民共和国。

二.解决方案

2.1 Oracle解决方案

首先想到的是regexp_replace进行替换,题目意思已经很明白,是要删除()及()里面的内容。

代码:

with tmp1 as (select '我爱(xxx)中华(qq)人民(aac啊)共和国' str from dual) select regexp_replace(str,'\(.*?\)','') str_new from tmp1

测试记录:

SQL> with tmp1 as 2 (select '我爱(xxx)中华(qq)人民(aac啊)共和国' str from dual) 3 select regexp_replace(str,'\(.*?\)','') str_new 4 from tmp1 5 / STR_NEW ------------------ 我爱中华人民共和国 SQL>

2.2 MySQL解决方案

我把Oracle的解决方案贴到mysql里面执行,结果字符串没有任何变化。

代码:

with tmp1 as (select '我爱(xxx)中华(qq)人民(aac啊)共和国' str from dual) select regexp_replace(str,'\(.*?\)','') str_new from tmp1

测试记录:

mysql> with tmp1 as -> (select '我爱(xxx)中华(qq)人民(aac啊)共和国' str from dual) -> select regexp_replace(str,'\(.*?\)','') str_new -> from tmp1; +----------------------------------------------+ | str_new | +----------------------------------------------+ | 我爱(xxx)中华(qq)人民(aac啊)共和国 | +----------------------------------------------+ 1 row in set (0.00 sec) mysql>

然后翻阅了下正则表达式的文档:
[[:punct:]] 任何标点符号。

于是用这个试试,最终问题得到解决。
代码:

select regexp_replace(str,'[[:punct:]].*?[[:punct:]]','') str_new from (select '我爱(xxx)中华(qq)人民(aac啊)共和国' str from dual) tmp1

测试记录:

mysql> select regexp_replace(str,'[[:punct:]].*?[[:punct:]]','') str_new -> from (select '我爱(xxx)中华(qq)人民(aac啊)共和国' str from dual) tmp1; +-----------------------------+ | str_new | +-----------------------------+ | 我爱中华人民共和国 | +-----------------------------+ 1 row in set (0.00 sec)

特别注意:
[[:punct:]] 任何标点符号,所以即便不是(),是其它标点符号,也是会被清空。

代码:

select regexp_replace(str,'[[:punct:]].*?[[:punct:]]','') str_new from (select '我爱(xxx?中华,qq)人民!aac啊)共和国' str from dual) tmp1

测试记录:

mysql> select regexp_replace(str,'[[:punct:]].*?[[:punct:]]','') str_new -> from (select '我爱(xxx?中华,qq)人民!aac啊)共和国' str from dual) tmp1; +-----------------------------+ | str_new | +-----------------------------+ | 我爱中华人民共和国 | +-----------------------------+ 1 row in set (0.00 sec)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论