【发布时间】:2019-06-25 04:37:48
【问题描述】:
我需要一个与 regexp_substr() 结合使用的正则表达式,它将给我一个介于其他两个指定单词之间的单词。
示例:
source_string => 'First Middle Last'
substring varchar2(100);
substring := regexp_substr(source_string, 'First (.*) Last'); <===
这不起作用:(。
dbms_output.put_line(substring) ===> 输出应该是:'Middle'
我知道这看起来很简单,老实说,一开始我也是这么想的。 但现在花了大约 3 小时寻找解决方案后,我放弃了......
【问题讨论】:
-
因此,在您的示例中,您正在寻找非常具体的单词“First”和“Last”之间的“单词”(无论如何定义)?如果“First”和“Last”之间有两三个词怎么办? 'First' 或 'Last' 是否可以在输入字符串中多次出现? (如果是这样,期望的结果是什么?)另外:为什么
regexp_replace()是问题陈述的一部分,而不是一个可能的解决方案的一部分?您是否不得不使用正则表达式并忽略所有不使用正则表达式的解决方案? -
我确定这三个词只会出现一次。我刚刚注意到当我提到 regexp_substr... 时我写了 regexp_replace。对不起。我不必使用正则表达式。如果您有更好的想法如何去做,我们会非常欢迎:D
标签: regex oracle regexp-substr