繁体   English   中英

REGEXP_REPLACE - 字符串中的两个字母

[英]REGEXP_REPLACE - two letters in a string

我有一个字符串:

string := '</br>, <br/>, \n<br>, jane, brutus'

我必须用“/n”标记替换所有“br”标记。 我需要这样的 output:

'/n, /n, n/, jane, brutus'

我试过了:

select regexp_replace('</br>, <br/>, \n<br>, ania', '^.*((br)[^,]+)', '\n', 1) from dual;

但是后来 output 是这样的:

'/n'

有什么想法可以解决这个问题吗?

这比你想象的要容易。 只需寻找 'br> 部分。 这是:一个左尖括号,一个可选斜杠,字母 b 和 r,一个可选斜杠,一个右尖括号: </?br/?>

整个表达式:

select regexp_replace('</br>, <br/>, \n<br>, ania', '</?br/?>', '\n') from dual;

如果要替换所有相邻标记组并将 br 标记与搜索中的 \n 相同,那么它会变得有点复杂:

regexp_replace('</br>, <br/>, \n<br>, ania', '(\\n|</?br/?>)+', '\n')

如果我理解正确,此代码将起作用。

SQL>
SELECT word,
   REGEXP_REPLACE (REGEXP_REPLACE (word, '([\\<])([a-zA-Z/]+) 
                    ([>])', '/n'),
                   '\\n([a-zA-Z/]+)',
                   '\1')
      AS Result
   FROM (SELECT '</br>, <br/>, \n<br>, jane, brutus' AS word FROM DUAL)

结果

/n,/n,/n,简,布鲁图斯

SQL>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM