Oracle怎么用正则表达式提取字段过滤字段中"非汉字"的所有字符?

大家都在搜:
扫描二维码安装房天下APP
手机浏览器访问房天下
> > 问题详情
求救:oracle 中的正则表达式
请问oracle 中的正则表达式中字符类&[[:lower:]]&,[[:digit:]]是什么意思啊,
浏览次数:0
POSIX Bracket ExpressionsPOSIX 括号正则[[:lower:]] 最外面的[] 代表一个字符. [:lower:] 代表这个字符必需是小写字母.同理 [[:digit:]] 代表一个数字字符.参考:[:alnum:] Alphanumeric characters [a-zA-Z0-9] [\p{L&}\p{Nd}]
\p{Alnum} [:alpha:] ...
POSIX Bracket ExpressionsPOSIX 括号正则[[:lower:]] 最外面的[] 代表一个字符. [:lower:] 代表这个字符必需是小写字母.同理 [[:digit:]] 代表一个数字字符.参考:[:alnum:] Alphanumeric characters [a-zA-Z0-9] [\p{L&}\p{Nd}]
\p{Alnum} [:alpha:] Alphabetic characters [a-zA-Z] \p{L&}
\p{Alpha} [:ascii:] ASCII characters [\x00-\x7F] \p{InBasicLatin}
\p{ASCII} [:blank:] Space and tab [ \t] [\p{Zs}\t]
\p{Blank} [:cntrl:] Control characters [\x00-\x1F\x7F] \p{Cc}
\p{Cntrl} [:digit:] Digits [0-9] \p{Nd} \d \p{Digit} [:graph:] Visible characters (i.e. anything except spaces, control characters, etc.) [\x21-\x7E] [^\p{Z}\p{C}]
\p{Graph} [:lower:] Lowercase letters [a-z] \p{Ll}
\p{Lower} [:print:] Visible characters and spaces (i.e. anything except control characters, etc.) [\x20-\x7E] \P{C}
\p{Print} [:punct:] Punctuation characters. [!&#$%&'()*+,-./:;?@[\\\]_`{|}~] \p{P}
\p{Punct} [:space:] All whitespace characters, including line breaks [ \t\r\v\f] [\p{Z}\t\r\v\f] \s \p{Space} [:upper:] Uppercase letters [A-Z] \p{Lu}
\p{Upper} [:word:] Word characters (letters, numbers and underscores) [A-Za-z0-9_] [\p{L}\p{N}\p{Pc}] \w
[:xdigit:] Hexadecimal digits [A-Fa-f0-9] [A-Fa-f0-9]
\p{XDigit}
下载房天下APP
提问获取更多回答
ask:2,asku:1,askr:14,askz:3,askd:6,RedisW:0askR:1,askD:29 mz:nohit,askU:0,askT:0askA:31
Copyright &
北京拓世宏业科技发展有限公司
Beijing Tuo Shi Hong Ye Science&Technology Development Co.,Ltd 版权所有
违法信息举报邮箱:asp&正则获得字符串中最后一个字母非字母不算
非常不错的用正则表达式实现的,获取字符串中最后一个字母的代码,这个正则可以应用在所有的支持正则的语言中
Function getLastWord(str)
Set regEx = New RegExp
regEx.Pattern = "(.*)([a-zA-Z])[^a-zA-Z]*"
regEx.IgnoreCase = false
regEx.Global = True
str = regEx.Replace(str,"$2")
getLastWord = str
Set reg=nothing
End Function
str="1B2A3fdsafdsf"
Response.Write(getLastWord(str)):Response.End()
Copyright (C) , All Rights Reserved.
版权所有 闽ICP备号
processed in 0.037 (s). 13 q(s)如何使用正则表达式过滤字符串中的非汉字内容?
[问题点数:20分,结帖人herdboy]
如何使用正则表达式过滤字符串中的非汉字内容?
[问题点数:20分,结帖人herdboy]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|Oracle正则表达式如何查询一个字符串里面包含了任意标点符号的所有记录。_百度知道
Oracle正则表达式如何查询一个字符串里面包含了任意标点符号的所有记录。
也就是其他的记录只能是数字、中文、英文字母的组合,语句如下,帮忙写下中间正则表达式部分select * from RECOMMENDATION where regexp_like(recocontent, '');
我有更好的答案
用 regexp_like这个函数来解决,正则表达式为:[[:punct:]]+这个正则可以找出任何标点符号。查询value中包含任何标点符号的记录如下:select * from xxx where regexp_like(value,'[[:punct:]]+');POSIX 正则表达式由标准的元字符(metacharacters)所构成: '$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。 '?' 匹配前面的子表达式零次或一次。 '*' 匹配前面的子表达式零次或多次。'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的 '( )' 标记一个子表达式的开始和结束位置。 '{m,n}' 一个精确地出现次数范围,m=&出现次数&=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。\num 匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。 [[:alpha:]] 任何字母。[[:digit:]] 任何数字。[[:alnum:]] 任何字母和数字。[[:space:]] 任何白字符。[[:upper:]] 任何大写字母。[[:lower:]] 任何小写字母。[[:punct:]] 任何标点符号。[[:xdigit:]] 任何16进制的数字,相当于[0-9a-fA-F]。 \转义符 *, +, ?, {n}, {n,}, {n,m} 限定符^, $, anymetacharacter 位置和顺序。
[[:punct:]]匹配标点再全表minus一次regexp_like出来的结果
本回答被提问者采纳
select * from RECOMMENDATION where regexp_like(recocontent, '/\w[a-zA-Z0-9]*/');
为您推荐:
其他类似问题
正则表达式的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
一个人经过不同程度的锻炼,就获得不同程度的修养。好比香料,捣得愈碎,磨得愈细,香得愈浓烈。我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容,我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
&元字符元字符描述*?如果有前面字符串的0次以上出现时匹配+?如果有前面字符串的1次以上出现时匹配{m}m是整数。它文本中找出给定子表达式的恰好m次出现{n}?前面的字符串只出现一次时匹配{m,}M是整数。它在文本中找出给定子表达示的至少m次出现{n,}?匹配前面的字符串至少n次{m,n}M和n是整数。它在文本中找出给定子表达示的m到n次出现{n,m}匹配前面的字符串至少到n次,但不多于m次c查询操作区分大小写i查询操作不区分大水写m多行字符串上的查询,在源字符串包含多行时,该查询允许用(^)模式匹配字符串的开始n通常匹配单个字符,也可以匹配新行x需要忽略正则表达示中的空格字符时,使用参数‘X’\A匹配字符串首,而不是行首,因而多行字符串不能匹配每一行\d匹配任意数字字符\D匹配任意非数字字符\s匹配任意空格字符\S匹配任意非空格字符\w匹配任意字符和数字。该字符和[:alnum:]之间的不同是\w包括下划线字符\W匹配任意非空字符串*通配符。找出在文本中包含0或多次给定子表达式出现的记录+找出在文本中包含1或多次给定子表达式出现的记录?找出在文本中包含0次或1次给定子表达示出现的记录.匹配文本中的任意字符&^锚。如果该字符后的表达式出现在行首,则匹配成功$锚。如果该字符后的表达式出现在行首,则匹配成功|分隔符,使用方法和OR相同(….)分组子表达式&正则表达式运算符和函数Oracle使用正则表达式离不开这4个函数:1、regexp_like2、regexp_substr3、regexp_instr4、regexp_replace看函数名称大概就能猜到有什么用了。&regexp_like&只能用于条件表达式,和 like 类似,但是使用的正则表达式进行匹配,语法很简单:regexp_substr&函数,和 substr 类似,用于拾取合符正则表达式描述的字符子串,语法如下:regexp_instr&函数,和 instr 类似,用于标定符合正则表达式的字符子串的开始位置,语法如下:regexp_replace&函数,和 replace 类似,用于替换符合正则表达式的字符串,语法如下:这里解析一下几个参数的含义:1、source_char,输入的字符串,可以是列名或者字符串常量、变量。2、pattern,正则表达式。3、match_parameter,匹配选项。&&&&&&& 取值范围: i:大小写不敏感; c:大小写敏感;n:点号 . 不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。4、position,标识从第几个字符开始正则表达式匹配。5、occurrence,标识第几个匹配组。6、replace_string,替换的字符串。说了一堆文绉绉的,现在开始实例演练了,在此之前先建好一个表。create table tmp aswith data as (& select 'like' as id ,'a9999' as str from dual union all& select 'like'&&&&&& ,'a9c'&&&&&&&&& from dual union all& select 'like'&&&&&& ,'A7007'&&&&&&& from dual union all& select 'like'&&&&&& ,'123a34cc'&&&& from dual union all& select 'substr'&&&& ,'123,234,345'& from dual union all& select 'substr'&&&& ,'12,34.56:78'& from dual union all& select 'substr'&&&& ,''&&& from dual union all& select 'instr'&&&&& ,'192.168.0.1'& from dual union all& select 'replace'&&& ,'(020)' from dual union all& select 'replace'&&& ,'' from dual )select *&select *ID&&&&& STR------- -------------like&&& a9999like&&& a9clike&&& A7007like&&& 123a34ccsubstr& 123,234,345substr& 12,34.56:78substr& instr&& 192.168.0.1replace (020)replace regexp_like 例子:select str from tmp where id='like' and regexp_like(str,'A\d+','i'); -- 'i' 忽略大小写STR-------------a9999a9cA7007123a34cc&select str from tmp where id='like' and regexp_like(str, 'a\d+');STR-------------a9999a9c123a34cc&select str from tmp where id='like' and regexp_like(str,'^a\d+');STR-------------a9999a9c&select str from tmp where id='like' and regexp_like(str,'^a\d+$');STR-------------a9999regexp_substr 例子:col str format a15;select& str,& regexp_substr(str,'[^,]+')&&&& str,& regexp_substr(str,'[^,]+',1,1) str,& regexp_substr(str,'[^,]+',1,2) str,& -- occurrence 第几个匹配组& regexp_substr(str,'[^,]+',2,1) str&& -- position 从第几个字符开始匹配from tmpwhere id='substr';STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR--------------- --------------- --------------- --------------- ---------------123,234,345&&&& 123&&&&&&&&&&&& 123&&&&&&&&&&&& 234&&&&&&&&&&&& 2312,34.56:78&&&& 12&&&&&&&&&&&&& 12&&&&&&&&&&&&& 34.56:78&&&&&&& 2&&&&&& &&&&&& &&&&&&&&&&&&&&&&&&&&&& &select& str,& regexp_substr(str,'\d')&&&&&&& str,& regexp_substr(str,'\d+'& ,1,1) str,& regexp_substr(str,'\d{2}',1,2) str,& regexp_substr(str,'\d{3}',2,1) strfrom tmp&&&& where id='substr';STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR--------------- --------------- --------------- --------------- ---------------123,234,345&&&& 1&&&&&&&&&&&&&& 123&&&&&&&&&&&& 23&&&&&&&&&&&&& 23412,34.56:78&&&& 1&&&&&&&&&&&&&& 12&&&&&&&&&&&&& 34&&&&&& 1&&&&&&&&&&&&&& &&&&&& 34&&&&&&&&&&&&& 234&&select regexp_substr('','\d',1,level) str& --取出每位数字,有时这也是行转列的方式from dualconnect by level&=9STR---------------123456789regex_instr 例子:col ind format 9999;select& str,& regexp_instr(str,'\.'&&& ) ind ,& regexp_instr(str,'\.',1,2) ind ,& regexp_instr(str,'\.',5,2) indfrom tmp where id='instr';STR&&&&&&&&&&&&&& IND&& IND&& IND--------------- ----- ----- -----192.168.0.1&&&&&&&& 4&&&& 8&&& 10&&&& select& regexp_instr('192.168.0.1','\.',1,level) ind ,& -- 点号. 所在的位置& regexp_instr('192.168.0.1','\d',1,level) ind&&& -- 每个数字的位置from dualconnect by level &=& 9& IND&& IND----- -----&&& 4&&&& 1&&& 8&&&& 2&& 10&&&& 3&&& 0&&&& 5&&& 0&&&& 6&&& 0&&&& 7&&& 0&&&& 9&&& 0&&& 11&&& 0&&&& 0regex_replace 例子:select& str,& regexp_replace(str,'020','GZ') str,& regexp_replace(str,'(\d{3})(\d{3})','&\2\1&') str -- 将第一、第二捕获组交换位置,用尖括号标识出来from tmpwhere id='replace'; STR&&&&&&&&&&&& STR&&&&&&&&&&&& STR--------------- --------------- ---------------(020)&& (GZ)&&& (020)&&&& &&& &C28综合应用的例子:col row_line format a30;with sudoku as (& select '' as line& from dual),tmp as (& select regexp_substr(line,'\d{9}',1,level) row_line,& level col& from sudoku& connect by level&=9)select regexp_replace( row_line ,'(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)','\1 \2 \3 \4 \5 \6 \7 \8 \9') row_linefrom tmp&ROW_LINE------------------------------0 2 0 0 0 0 0 8 05 6 8 1 7 9 2 3 40 9 0 0 0 0 0 1 00 3 0 0 4 0 0 5 00 4 0 2 0 5 0 9 00 7 0 0 8 0 0 4 00 5 0 0 0 0 0 6 02 8 9 6 3 4 1 7 50 1 0 0 0 0 0 2 0
阅读(1615)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'Oracle正则表达式用法',
blogAbstract:'方括号表达示',
blogTag:'',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:4,
publishTime:1,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'一个人经过不同程度的锻炼,就获得不同程度的修养。好比香料,捣得愈碎,磨得愈细,香得愈浓烈。我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容,我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系。',
hmcon:'1',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 正则表达式过滤表情 的文章

 

随机推荐