ORACLE 用正则表达式匹配 回车换行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORACLE 用正则表达式匹配 回车换行相关的知识,希望对你有一定的参考价值。
ORACLE 用正则表达式匹配 回车换行 ,表达式如何写?
不要告诉我用\n或\r,网上都这么说,用了你就知道,这不行!
\x0a 也不行,实践中不行.
目前是用 [^\w\t ],来临时匹配空格,但是很郁闷,不严谨
求高手回答!
regexp_like(chr(13)||chr(10),'\n') is fasle.
请STFW的同学省点劲.
刚看了自己的帖子,有手误 ,[^\w\t ],不是用来匹配"空格"是用来匹配'行'的.
由于字符组中不能使用转义.所以实战中只能作为思路.
以下是思路的实践:
declare
test_str varchar2(2000):='12345'||CHR(13) || CHR(10)||' abc';
pattern_str varchar2(1000) :='.*'; /*自己想出来的另外一个替代方法,原理: '.' 不能匹配'行',所以.* 遇到'行'就终止.由此计算'行'的位置*/
pattern_str1 varchar2(1000) :='(\w|[ \t])*';
out_str varchar2(1000);
begin
out_str:= length(REGEXP_substr (test_str,pattern_str))+1;
DBMS_OUTPUT.PUT_LINE(out_str); --7 只计算换行chr(10)
out_str:= length(REGEXP_substr (test_str,pattern_str1))+1;
DBMS_OUTPUT.PUT_LINE(out_str); --6 遇到回车也停止
end;
总结: .*比(\w|[ \t])*严谨,但是都不简洁.
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
匹配空格就打空格就行 匹配空白用\s
网上都这么说 你实践有问题 怎么不怀疑自己?
select * from dual where regexp_like('ab c',' ');这样你匹配不了空格?
匹配一个select * from dual where regexp_like('ab c',' +'); 参考技术A 不用正则我会用chr(13)||chr(10)
awk 正则 去掉回车换行
我有三行数据
abcd aaa
aefdd 1123-04
acdf bbb
我想取出1123-04而且想要它后面没有回车,我要怎么写正则表达式呀??
就这里的话,尝试按照你的说明来:
match($0,/aefdd ([0-9-]+)$/,want); print want[1];
回车默认在awk里是作记录分割符的,所以不会被匹配进变量的。
如果你修改过记录分割符,那么可以用[\r\n]来匹配换行 参考技术B awk '$2 ~ /[0-9]/print $2' data.txt
以上是关于ORACLE 用正则表达式匹配 回车换行的主要内容,如果未能解决你的问题,请参考以下文章