较大字符串中较小字符串的位置

时间:2014-08-28 19:12:41

标签: regex plsql oracle11g

我必须在pl / sql中的较大字符串中找到字符串的位置。

让我们说字符串是:'allthebest all a best' 我必须得到字符串“the”的位置,只有它是一个单独的单词而不是字符串的一部分。 在上述情况下,单词“the”的位置应该是16对应于indepedant单词而不是4.不应该考虑“allthebest”中单词“the”的出现。

试过这个:

select regexp_instr('allthebest all the best',' the ') from dual;

当然,它在前面有一个空格并且跟在“the”之后有效。 但是,对于字符串是这样的情况不起作用:'allthebest all best'(注意:'the'后面没有尾随空格)

如何使它只查找输入字符串中的独立单词,而输入字符串本身不是pl / sql中较小字符串的一部分?

2 个答案:

答案 0 :(得分:2)

假设您可以简单地破坏空格字符上的字符串以生成“单词”(更复杂的解决方案是查找指示单词结尾的标点符号),您可以在开头添加空格并且结束字符串并从结果中减去1(以说明您在开头添加了额外空格的事实)

instr( ' ' || <<your string>> || ' ', ' the ' ) - 1

答案 1 :(得分:1)

尝试模式'([^[:alpha:]]|^)the([^[:alpha:]]|$)'

&#39> s&#34;任何非字母或字符串的开头&#34;接下来是你正在寻找的单词,然后是&#34;任何非字母或字符串的结尾&#34;