我需要一个正则表达式来查找字符串中!#!
以外的值。
例如,如果字符串为:
Text1!#!Text2!#!Text#3!#!
它应该返回Text1
,Text2
,Text#3
[^!#!]
也将与#
中的Text#3
相匹配,这是我不希望的。
答案 0 :(得分:0)
您可以使用正向后看和向前看来解决此问题。
简单地:
(.+?)
(?<=^|!#!)
有图案(?=!#!|$)
后面具有模式在此处查看您的示例:https://rubular.com/r/f6BDr9CxeaQTIz使用(?<=^|!#!)(.+?)(?=!#!|$)
答案 1 :(得分:0)
您可以将REGEXP_SUBSTR
与CONNECT_BY
结合使用,以将字符串分割成由!#!
分隔的单词。我们使用正则表达式:
(.*?)(!#!|$)
,它会延迟匹配一些字符,直到遇到!#!
或字符串结尾($
)。
例如:
SELECT REGEXP_SUBSTR ('Text1!#!Text2!#!Text#3!#!',
'(.*?)(!#!|$)',
1,
LEVEL,
'',
1)
AS VAL
FROM DUAL
CONNECT BY REGEXP_SUBSTR ('Text1!#!Text2!#!Text#3!#!',
'(.*?)(!#!|$)',
1,
LEVEL,
'',
1)
IS NOT NULL
输出:
VAL
Text1
Text2
Text#3