此问题已在此处有答案:
Substr instr help needed in sql oracle(2个答案)
25天前关闭
我想从字符串模式中提取特定的字符串。使用正则表达式。但我发现它只返回null值。
- 原始模式:
<Information>Not readable</Information>
- 我想从模式中提取的是:
Not readable
下面是我使用的SQL:
regexp_substr(tridata,'[a-zA-Z ]*(?=</Information>)')
但它最终只返回null
值。
我想知道这个查询有什么问题吗?或者我可以用哪种方式来提取字符串?
3条答案
按热度按时间gcuhipw91#
Oracle在其regex引擎中不支持lookaround模式。您可以使用subexpression(在其他正则表达式引擎中通常称为捕获组)来提取特定模式:
演示:https://livesql.oracle.com/apex/livesql/s/mk1rt44jwm58yev4rt8yr76s
wfveoks02#
一个选项是使用
REGEXP_REPLACE()
函数,例如哪里
*\2返回匹配中的第2个捕获组
*(.+)greetings(
+
)查找 Information 标签之间的任何字符(.
)nwwlzxa73#
这是示例数据的一个选项
查询