oracle SQL 正则表达式 100

亲,怎么匹配出中括号的内容,用逗号隔开例如:1+[abc123]+3+([bcd456]*5/100+max([asde_20]))需要匹配出:abc123,bcd456... 亲,怎么匹配出中括号的内容,用逗号隔开
例如:1+[abc123]+3+([bcd456]*5/100+max([asde_20]))
需要匹配出: abc123,bcd456,asde_20
请参考
select REGEXP_REPLACE('1+[abc123]+3+([bcd456]*5/100+max([asde_20]))','([*+])','\1') from dual;
展开
 我来答
爱问爱答来来
2019-02-11 · TA获得超过1276个赞
知道小有建树答主
回答量:2654
采纳率:46%
帮助的人:89万
展开全部
用 Oracle Database 10g 使用正规表达式
  您可以使用最新引进的 Oracle SQL REGEXP_LIKE 操作符和 REGEXP_INSTR、REGEXP_SUBSTR 以及 REGEXP_REPLACE 函数来发挥正规表达式的作用。您将体会到这个新的功能如何对 LIKE 操作符和 INSTR、SUBSTR 和 REPLACE 函数进行了补充。实际上,它们类似于已有的操作符,但现在增加了强大的模式匹配功能。被搜索的数据可以是简单的字符串或是存储在数据库字符列中的大量文本。正规表达式让您能够以一种您以前从未想过的方式来搜索、替换和验证数据,并提供高度的灵活性。
正规表达式的基本例子
  在使用这个新功能之前,您需要了解一些元字符的含义。句号 (.) 匹配一个正规表达式中的任意字符(除了换行符)。例如,正规表达式 a.b 匹配的字符串中首先包含字母 a,接着是其它任意单个字符(除了换行符),再接着是字母 b。字符串 axb、xaybx 和 abba 都与之匹配,因为在字符串中隐藏了这种模式。如果您想要精确地匹配以 a 开头和以 b 结尾的一条三个字母的字符串,则您必须对正规表达式进行定位。脱字符号 (^) 元字符指示一行的开始,而美元符号 ($) 指示一行的结尾(参见表1:附表见第4页)。因此, 正规表达式 ^a.b$ 匹配字符串 aab、abb 或 axb。将这种方式与 LIKE 操作符提供的类似的模式匹配 a_b 相比较,其中 (_) 是单字符通配符。
  默认情况下,一个正规表达式中的一个单独的字符或字符列表只匹配一次。为了指示在一个正规表达式中多次出现的一个字符,您可以使用一个量词,它也被称为重复操作符。.如果您想要得到从字母 a 开始并以字母 b 结束的匹配模式,则您的正规表达式看起来像这样:^a.*b$。* 元字符重复前面的元字符 (.) 指示的匹配零次、一次或更多次。LIKE 操作符的等价的模式是 a%b,其中用百分号 (%) 来指示任意字符出现零次、一次或多次。
  表 2 给出了重复操作符的完整列表。注意它包含了特殊的重复选项,它们实现了比现有的 LIKE 通配符更大的灵活性。如果您用圆括号括住一个表达式,这将有效地创建一个可以重复一定次数的子表达式。例如,正规表达式 b(an)*a 匹配 ba、bana、banana、yourbananasplit 等。仅供参考!
更多追问追答
追问
主要就是正则不会写。。。
select REGEXP_REPLACE('1+[123]+3+([456]*5/100)','(\[\d+\])*([^\[\]])*','\2') from dual;
例如这个 你能给匹配出 123 456来吗?
追答
你百度一下,或者问专家
samismiling
2019-02-11 · 知道合伙人软件行家
samismiling
知道合伙人软件行家
采纳数:1340 获赞数:5604

向TA提问 私信TA
展开全部
正则表达式已经在很多软件中得到广泛的应用,包括*nix(Linux, Unix等),HP等操作系统,PHP,C#,Java等开发环境。
本文主要介绍了关于Oracle中正则表达式的使用方法,下面话不多说了,来一起看看详细的介绍。
Oracle使用正则表达式离不开这4个函数:regexp_like、regexp_substr、regexp_instr、regexp_replace。
1、regexp_like
该函数只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配
2、regexp_substr
该函数和 substr 类似,用于拾取合符正则表达式描述的字符子串
3、regexp_instr
该函数和 instr 类似,用于标定符合正则表达式的字符子串的开始位置
4、regexp_replace
该函数和 replace 类似,用于替换符合正则表达式的字符串
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自阅江楼高兴的红花刺槐
2019-02-11 · TA获得超过175个赞
知道答主
回答量:223
采纳率:25%
帮助的人:10.3万
展开全部
  您可以使用最新引进的 Oracle SQL REGEXP_LIKE 操作符和 REGEXP_INSTR、REGEXP_SUBSTR 以及 REGEXP_REPLACE 函数来发挥正规表达式的作用。您将体会到这个新的功能如何对 LIKE 操作符和 INSTR、SUBSTR 和 REPLACE 函数进行了补充。实际上,它们类似于已有的操作符,但现在增加了强大的模式匹配功能。被搜索的数据可以是简单的字符串或是存储在数据库字符列中的大量文本。正规表达式让您能够以一种您以前从未想过的方式来搜索、替换和验证数据,并提供高度的灵活性。冯吃樱桃好结果哈哈哈大热天的人
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-02-11
展开全部
>GetdocumentElement() ; //所有子节点 MSXML2::IXMLDOMNodeListPtr pNodes ; pNodes = pRoot->GetchildNodes() ; int personNumber = pNodes->Getlength() ; MSXML2::IXMLDOMNodePtr pNode ;//根节点下的节点 MSXML2::IXMLDOMNodePtr pNodeAtt ;//根节点下所有节点的所有属性 MSXML2::IXMLDOMNamedNodeMapPtr pNamedNodeMap ; for(int i=0;iGetitem(i) ; pNamedNodeMap = pNode->Getattributes() ; pNodeAtt = pNamedNodeMap->Getitem(type) ; //判断是否有节点的某个属性是否与所找的数据相同,如果有,则删除该节点 if((CString)(pNodeAtt->GetnodeTypedValue().bstrVal) == person) { HRESULT hr = pRoot->removeChild(pNode) ; if(FAILED(hr))
追问
看不明白,你这是oracle 代码吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式