Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >plsql regex,用于删除引号之间的文本

plsql regex,用于删除引号之间的文本
EN

Stack Overflow用户
提问于 2013-04-15 10:30:04
回答 2查看 1.5K关注 0票数 0

我正在努力使用正则表达式替换解决方案,它将从VARCHAR2字段中删除引号之间的所有文本,即使这些引号之间的文本也有引号文本,例如文本:

代码语言:javascript
运行
AI代码解释
复制
'text start 'text inside' text end' leftover 'some other text'

正则表达式替换后应包含:leftover

我想出的代码是这样的:

代码语言:javascript
运行
AI代码解释
复制
with tbl as (
  select
    '''text start ''text inside'' text end'' leftover ''some other text''' as str
    ,'\''(.*?)\''' as regex
  from dual
)
select
  tbl.str as strA
  ,regexp_replace(tbl.str,tbl.regex, '') as strB
from tbl; 

但是子引号之间的文本仍然存在。

是否有可能使用正则表达式来实现这一点,或者我是否应该在某个循环中拆分和分析内容?理想的解决方案是,它可以处理引用文本中出现的无限级别的引用文本。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-15 12:46:41

理想的解决方案是,如果它可以处理引用文本中出现的无限级别的引用文本。

使用单个正则表达式是不可能的。

递归正则表达式和递归捕获缓冲区在Oracle中都不可用。

更新:

但这可以通过SQL来完成:

代码语言:javascript
运行
AI代码解释
复制
with tbl as (
  select
    '''text start ''text inside'' text end'' leftover ''some other text''' 
    as str
  from dual
)
select
  listagg(text) within group (order by n) 
from 
  (
    select 
      n,
      sum(decode(regexp_replace(str, '^(.*?([<>])){'||n||'}.*$', '\2'),
        '<', 1, '>', -1, 0)) over (order by n) as nest,
      regexp_replace(str, '^(.*?[<>]){'||n||'}([^<>]*).*$', '\2') as text
    from 
      ( select regexp_replace(regexp_replace(str, '(\s|^)''', '\1<'), 
          '''(\s|$)', '>\1') as str from tbl ), 
      ( select level-1 as n from dual 
        connect by level-1 <= (select regexp_count(str, '''') from tbl) )
  )
where nest = 0

fiddle

票数 1
EN

Stack Overflow用户

发布于 2013-04-15 12:10:59

试一试

代码语言:javascript
运行
AI代码解释
复制
, '^[^'']*(''.*'')[^'']*$' as regex

警告:这将在捕获组1中的测试文本中捕获第一个和最后一个单引号之间的所有内容,包括最外面的引号本身。特别是,它不检查正确的嵌套。

更重要的是,您的替换expr将更加复杂:

代码语言:javascript
运行
AI代码解释
复制
, CASE WHEN REGEXP_INSTR(test, regex) > 0
     THEN REPLACE ( test, REGEXP_REPLACE(test, regex, '\1'), '' )
     ELSE test
  END

如果regexp匹配,则首先提取捕获组,以便在普通替换中使用(这是可行的,因为可以保证匹配的部分是最大的)。

重要提示:该解决方案不会在您提供的特定上下文中产生所需的结果。但是,使用plsql regexp函数再好不过了,因为oracle regex引擎没有提供扩展来表示模式中的递归(例如。pcre do)。您需要此工具来解析嵌套构造(即,执行平衡计数)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16012963

复制
相关文章
【Hive】从长格式表到宽格式表的转换
使用sql代码作分析的时候,几次遇到需要将长格式数据转换成宽格式数据,一般使用left join或者case when实现,代码看起来冗长,探索一下,可以使用更简单的方式实现长格式数据转换成宽格式数据。
1480
2019/05/22
2.4K0
深入Python数据分析:数据由长格式变为宽格式
melt()的逆操作在Pandas中对应为 pivot(),它也是一个设计上的顶层函数,工程位置如下:
double
2019/05/27
1.5K0
iOS 计算NSString宽高与计算NSAttributedString的宽高
开篇 项目有一个客服反馈功能,用到的是聊天列表的形式,这就免不了计算字符串的宽高,由于要给字符串加间距,没办法,只能用 NSAttributedString 所以要计算NSAttributedString的长宽 计算NSString宽高 计算NSString宽高很简单,代码如下: //返回字符串所占用的尺寸. - (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize { NSDictionary *attrs = @{NSFontAt
GuangdongQi
2018/05/24
5.2K0
宽表的缺点
宽表在BI业务中比比皆是,每次建设BI系统时首先要做的就是准备宽表。有时系统中的宽表可能会有上千个字段,经常因为“过宽”超过了数据库表字段数量限制还要再拆分。
磊哥
2023/02/16
2.3K0
宽表的缺点
php宽字节注入,[投稿]宽字节注入详解
在mysql中,用于转义的函数有addslashes,mysql_real_escape_string,mysql_escape_string等,还有一种情况是magic_quote_gpc,不过高版本的PHP将去除这个特性。
全栈程序员站长
2022/11/04
3.5K0
php宽字节注入,[投稿]宽字节注入详解
TextField的高宽autosize[通俗易懂]
var t_name:TextField = new TextField; trace(t_name.height); trace(t_name.width);
全栈程序员站长
2022/08/28
1.1K0
宽字节注入是什么_sqlmap宽字节注入
在一个CTF练习的网站,看到了一个宽字节注入的题目,我是一个web萌新,没什么经验,一开始也没有想到是宽字节,还是一位朋友给我提到的,让我猛然大悟,咳咳。。。做一些总结。
全栈程序员站长
2022/11/04
1.9K0
宽字节注入是什么_sqlmap宽字节注入
手动测量 View 的宽高
手动调用 View 的 measure(int widthMeasureSpec,int heightMeasureSpec) 方法来得到 View 的宽高。
HelloVass
2018/09/12
1.5K0
1宽币=883?山本宽称要发行自己的数字货币
前两天,专门做日本御宅商品在海外销售的  Tokyo Otaku Mode 发布公告打算搞个面向 ACG 行业的数字货币「Otaku Coin」,希望能够未来通过「宅币」连接消费者和创作者,让阿宅们在日常观看动画、漫画玩游戏的时候也可以获得宅币,再将宅币支援给创作者,形成良性循环。虽然「宅币」面临的问题还有很多但想法还不错,而且 Tokyo Otaku Mode 也不会说跑路就跑路。而山本宽今天突然在自己的动画公司官网上发布消息,称自己也要发行数字货币 Twilight 币,构思和人家「宅币」一模一样…
企鹅号小编
2018/01/22
9440
1宽币=883?山本宽称要发行自己的数字货币
按照原宽高获得等比新宽高
随便贴代码 点击(此处)折叠或打开 #include <stdio.h> int get_divisor(int x, int y) { int ret = 0; while (x%y != 0) {                 ret = x % y;                 x = y;                 y = ret; }         return ret; } int get_height(int width
用户3765803
2019/03/05
9020
宽字节注入(2)
昨晚折腾了一晚上,把大致的一些东西整理了下,为团队纳新选了几首音乐素材..然后团队的一个表弟来问我宽字节注入的事情了...然后就就才抽空写了一点作为上一篇mysql注入的补充。 本来昨天参加t00ls
lonelyvaf
2018/06/07
7720
世界上最长寿的泡泡:加点东西,生命延长到465天
故事的主人公是一个叫圆圆的小女孩,她的父母为改善大西北的生态环境奉献了整个青春,但由于供水成本过高,他们辛辛苦苦建立起来的城市——丝路市依然难逃废弃的命运。
机器之心
2022/02/23
1910
世界上最长寿的泡泡:加点东西,生命延长到465天
世界上最长寿的泡泡:加点东西,生命延长到465天
来源:机器之心本文共2200字,建议阅读5分钟和普通泡泡1分钟的短暂美丽相比,这个泡泡的生命足足延长了20万倍。 十多年前,科幻作家刘慈欣写过一个有趣的小故事。 故事的主人公是一个叫圆圆的小女孩,她的父母为改善大西北的生态环境奉献了整个青春,但由于供水成本过高,他们辛辛苦苦建立起来的城市——丝路市依然难逃废弃的命运。 圆圆本人的梦想则比较简单,她只想吹出一个大大的泡泡。对此,圆圆的爸爸忧心忡忡,因为他认为女儿追求的是美丽、新奇而虚幻的东西。长大之后,圆圆凭借自己学到的东西创立了一个资产数亿的公司,但她的梦想
数据派THU
2022/03/04
2680
Activity中获取View的宽高
有些时候我们需要获取到View的宽高信息。在onCreate和onResume中尝试view.getWidth()或是view.getHeiht()时,我们会发现获取到的是0。 Activity视图在创建完成后,各个子view并不一定被加载完成。 获取宽高正确的方法有哪些呢?
AnRFDev
2021/02/01
1.7K0
人群创建的基础:画像宽表
​本节主要介绍人群创建所依赖的画像宽表的生成方式。为什么要创建画像宽表?基于原始的标签数据表进行人群圈选有什么问题?如何生成画像宽表?针对这些问题本节会给出详细解答。
张叔叔讲互联网
2023/10/16
6920
人群创建的基础:画像宽表
宽字节注入讲解
我讨厌现在的自己,一边压抑着自己的情绪,一边装作没事的样子,一到深夜就彻底崩溃了,天亮后还要微笑面对生活。。。
全栈程序员站长
2022/11/04
6300
宽字节注入讲解
不定宽高的水平垂直居中
 CSS3方法一: 1 //父元素相对定位 2 parent{position:relative;} 3 //子元素相对定位后偏移 4 child{position: absolute; top:50%; left: 50%; -webkit-transform:translate(-50%,-50%)} CSS3方法二: 1 //给父元素添加如下属性 2 parent{ display: -webkit-box; -webkit-box-pack:center; -webkit-box-align:cen
小古哥
2018/03/08
7680
sql–宽字节注入
宽字节注入是利用msql的一个特性,mysql在使用GBK编码的时候,会认为俩个字符是一个汉字GBK编码,它的编码范围是0×8140~0xFEFE(不包括xx7F),在遇到%df(ascii(223)) >ascii(128)时自动拼接%5c,因此吃掉‘\’,而%27、%20小于ascii(128)的字符就保留了。通常导致编码转换的注入问题,尤其是使用php连接mysql数据库的时候,一个gbk汉字占两个字节,取值范围是(编码位数):第一个字节是(129-254),第二个字节(64-254)当设置gbk编码后,遇到连续两个字节,都符合gbk取值范围,会自动解析为一个汉字。
字节脉搏实验室
2020/04/07
9260
sql–宽字节注入
Facebook泄漏升级:受影响用户增长到8700万
美国时间 4 月 4 日,Facebook 的首席技术官 Mike Schroepfer 在官网发布声明,描述了数据泄露事件之后 Facebook 近期采取的一系列加强隐私保护的措施。但他同时也表示,Cambridge Analytica 从 Facebook 获取的用户信息高达 8700 万,比之前的 5000 万多出不少。其中,超过 80% 的用户都是美国人。
FB客服
2018/07/30
3820
Facebook泄漏升级:受影响用户增长到8700万
点击加载更多

相似问题

长到宽格式

10

长到宽格式R

29

Dataframe长到宽格式

29

长到宽格式的倍数

10

SQLite长到宽的格式?

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档