首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >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

复制
相关文章
llinux/重启/用户切换/注销
一.指令 shutdown命令 shutdown -h now //立即关机 shutdown -h 2 //分钟后关机 shutdown -r now //立即重启 shutdown -r 1 //1分钟后重启 sleep 30s //等待30秒来后面也可以运行程序 halt //关机 reboot //重启 sync //把内存的数据同步到磁盘,一般定时关机或者重启都要加这个指令放置信息丢失 init 0 //关机 init 6 //重启 二.定时关机脚本
小小咸鱼YwY
2020/06/19
2.9K0
linux用户的登录和注销
在 Linux 系统中,用户登录和注销是使用 Shell(命令行解释器)来完成的。本文将介绍如何在 Linux 系统中进行用户登录和注销的详细过程,并给出相应的示例。
玖叁叁
2023/04/09
6.3K0
idea。git撤销merge操作。并取消
该命令仅仅在合并后导致冲突时才使用。git merge --abort将会抛弃合并过程并且尝试重建合并前的状态。但是,当合并开始时如果存在未commit的文件,git merge --abort在某些情况下将无法重现合并前的状态。(特别是这些未commit的文件在合并的过程中将会被修改时)
DencyCheng
2020/05/25
8.8K0
修改用户ID和用户组ID
假定原用户和用户组id如下: 用户 admin 500 组 admin 500 要修改成用户和组id如下: 用户 admin 1000 组 admin 1000 修改用户ID usermod -u 1000 admin 修改组ID groupmod -g 1000 admin 修改文件权限 find / -user 500 -exec chown -h admin {} \; find / -group 500 -exec chgrp -h admin {} \;
kongxx
2018/12/21
2.7K0
Apache NiFi中的JWT身份验证
JSON Web Tokens为众多Web应用程序和框架提供了灵活的身份验证和授权标准。RFC 7519概述了JWT的基本要素,枚举了符合公共声明属性的所需编码,格式和已注册的声明属性名称(payload里属性称为声明)。RFC 7515中的JSON Web签名和RFC 7518中的JSON Web算法描述了JWT的支持标准,其他的比如OAuth 2.0框架的安全标准构建在这些支持标准上,就可以在各种服务中启用授权。
@阿诚
2022/03/04
4.2K0
微服务系列-认证策略
在服务众多的微服务体系中,使用单点登录方案是一个好的解决方式。也意味着每个面向用户的服务都必须和认证服务交互,这会带来琐碎的流量,同时方案实现起来较复杂。 分布式会话: 将用户认证信息存储在共享存储中,通畅由用户会话作为key来实现的简单分布式哈希映射,当用户访问微服务时,用户数据可以从共享存储中获取。 客户端令牌: 令牌在客户端产生,有身份认证服务进行签名,必须包括足够多的信息,以便在微服务中建立用户身份。令牌附加在每个请求上,为微服务提供用户身份认证。 这种方案安全性相对较好,身份验证注销是一个问题
春哥大魔王
2018/04/16
7240
微服务系列-认证策略
Restful安全认证及权限的解决方案
一、Restful安全认证常用方式  1.Session+Cookie  传统的Web认证方式。需要解决会话共享及跨域请求的问题。  2.JWT  JSON Web Token。  3.OAuth 
庞小明
2018/03/09
2.9K0
Restful安全认证及权限的解决方案
撤销 git add . 并保留修改的方法
执行完 git add . 才发现没有在对应的分支,如何撤回呢? 可以参考下面的方法: 文件退出暂存区,但是修改保留: git reset --mixed 撤销所有的已经 add 的文件: git reset HEAD . 撤销某个文件或文件夹: git reset HEAD  -filename 另外:可以用 git status Git 会告诉你可以通过那个命令来执行操作。 未经允许不得转载:w3h5 » 撤销 git add . 并保留修改的方法
德顺
2022/01/12
33.6K0
linux之开机、重启和用户登录注销
一、开机和重启 shutdown: shutdown -h now:立即关机 shutdown -h 1:1分钟后关机 shutdown -r now:立即重启 halt:直接使用,相当于立即关机 reboot:重启 sync:把内存的数据同步到磁盘(建议关机或重启之前先执行,防止数据丢失) 二、用户登录和注销 使用su-用户名指令可以直接切换为不同用户。 在远程连接时,而不是在linux终端,使用logout可注销用户。
西西嘛呦
2020/08/26
3.6K0
WinCC脚本应用之用户登录/注销
Simatic WinCC项目中的用户管理可用来分配和管理运行系统中操作的访问,简单来说就是规定张三可以点击这个按钮,李四不可以修改过程数据。既然有用户就会有用户登录/注销这个操作,通常我们习惯组态“登录”和“注销”按钮来实现这个操作,按钮事件下可以组态C脚本调用相应的ODK函数。而VBS脚本中没有直接提供用户登录/注销的对象或者方法,但是我们仍然可以在VBS脚本间接的实现这个功能。
科控物联
2022/03/28
10K0
WinCC脚本应用之用户登录/注销
JavaWeb 基于Session的用户登陆注销实现
  通过Session来存储用户的部分登陆信息来验证用户是否在线,这应该时最容易实现的一种Web端方案,本文以SSM(Spring、SpringMVC、myBatis)框架为载体,来具体实现这套登陆系统。
Rekent
2018/09/04
2.3K0
分享一篇详尽的关于如何在 JavaScript 中实现刷新令牌的指南
刷新令牌允许用户无需重新进行身份验证即可获取新的访问令牌,从而确保更加无缝的身份验证体验。这是通过使用长期刷新令牌来获取新的访问令牌来完成的,即使原始访问令牌已过期也是如此。
前端达人
2023/08/31
4640
分享一篇详尽的关于如何在 JavaScript 中实现刷新令牌的指南
Linux之开机、重启和用户登录注销等操作
1. 关机&重启命令 基本介绍 立刻进行关机 shutdown -h now 显示提示信息后再关机:“hello,1分钟后会关机了” shutdown -h 1 "hello,1分钟后会关机了" 现在立刻重新启动计算机 shutdown -r now 或 reboot 关机,作用和上面的一样。但不是正常关机,这是关闭内存 half 或 int 0 把内存和数据同步到磁盘 sync 2. 注意细节 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中 目前的 shutdown/rebo
兮动人
2021/06/11
1.8K0
Linux 虚拟机关机、重启和用户登录注销
# Linux 虚拟机关机、重启和用户登录注销 # 关机&重启命令 # 基本介绍 shutdown -h now 立该进行关机 shutdown -h 1 "hello,1分钟后会关机了" shutdown -r now 现在重新启动计算机 halt 关机,作用和上面一样. reboot 现在重新启动
用户9615083
2022/12/25
2.6K0
基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码
我们一般默认使用的都是root用户,超级管理员,拥有全部的权限。但是,一个公司里面的数据库服务器上面可能同时运行着很多个项目的数据库。所以,我们应该可以根据不同的项目建立不同的用户,分配不同的权限来管理和维护数据库。
Devops海洋的渔夫
2022/01/17
1.4K0
基础SQL-DCL语句-创建用户-授权用户-撤销授权-查看权限-删除用户-修改用户密码
单点登录原理与简单实现 原
web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系
wuweixiang
2018/08/14
9090
单点登录原理与简单实现
                                                                            原
单点登录原理与简单实现
web应用通常采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系。
Bug开发工程师
2018/09/21
1.1K0
单点登录原理与简单实现
点击加载更多

相似问题

烧瓶--如何撤销令牌/注销

110

Spring security。如何注销用户(撤销oauth2令牌)

8555

Laravel护照单元注销/撤销令牌测试

20

如何FOSOAuthServerBundle“注销”或更好地撤销令牌

24

如何注销(即撤销、删除或使令牌失效)?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

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