我需要替换像这样的东西:
some random characters[[some_randome_characters1|some_randome_characters2]]some random characters
到此:
[link=some_randome_characters]some_randome_characters[/link]
我设法写这个程序:
l_tmp:=regexp_substr(content,'/[{2}(/s|/w|/d)+/|/[{2}(/s|/w|/d)+/]{2}');
...这里我正在做其他事情来建立我的链接。
问题是(/s|/w|/d)+
找不到所有匹配项 - >对于具有'。'或'='等的exapmle文本。总而言之,我想改变这一点:
(/s|/w|/d)+
到此:
[^/|/[/]]
但它不起作用。有没有办法逃脱这3个角色?
答案 0 :(得分:3)
您正在使用shlash /
字符,
但是你必须使用反斜杠\
来转义一个字符。
答案 1 :(得分:0)
Oracle 11g R2架构设置:
CREATE OR REPLACE FUNCTION extractFirstLink(
str IN VARCHAR2
) RETURN VARCHAR2 DETERMINISTIC
IS
m1 VARCHAR2(4000) := REGEXP_SUBSTR( str, '\[\[(.*?)(\|(.*?))?\]\]', 1, 1, NULL, 1 );
m2 VARCHAR2(4000) := REGEXP_SUBSTR( str, '\[\[(.*?)(\|(.*?))?\]\]', 1, 1, NULL, 3 );
BEGIN
RETURN '[link=' || m1 || ']' || NVL( m2, m1 ) || '[/link]';
END extractFirstLink;
/
查询1 :
WITH data AS (
SELECT 'some random characters[[some_randome_characters1|some_randome_characters2]]some random characters' AS text
FROM DUAL
)
SELECT extractFirstLink( text )
FROM data
<强> Results 强>:
| EXTRACTFIRSTLINK(TEXT) |
|----------------------------------------------------------------|
| [link=some_randome_characters1]some_randome_characters2[/link] |