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 用了就知道 百试百灵 你regexp_like()
\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而且想要它后面没有回车,我要怎么写正则表达式呀??

参考技术A 详细说明一下要取的规律及需要的结果以及其保存方式吧, 你这样问很含糊啊

就这里的话,尝试按照你的说明来:
match($0,/aefdd ([0-9-]+)$/,want); print want[1];

回车默认在awk里是作记录分割符的,所以不会被匹配进变量的。
如果你修改过记录分割符,那么可以用[\r\n]来匹配换行
参考技术B awk '$2 ~ /[0-9]/print $2' data.txt

以上是关于ORACLE 用正则表达式匹配 回车换行的主要内容,如果未能解决你的问题,请参考以下文章

awk 正则 去掉回车换行

正则表达式 换行符

如何在 PHP 中使用正则表达式匹配空格、回车和换行?

js用正则把换行br替换为段落p

正则表达式 怎么插入换行

ORACLE的正则表达式(摘自网上)