0

我正在使用 Oracle 11G,并且我有以下字符串: I - Am in- Need Help- Please并且想使用该-字符解析字符串,然后选择第二个对象之后的所有内容。我一直在玩REGEXP_REPLACESUBSTR我可以选择第二个对象,但似乎无法选择第二个对象之后的所有内容。我知道我需要在我认为的某个地方添加一个 *,但我似乎无法获得正确的语法。任何帮助将不胜感激。

SELECT REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '[^-]+' , 1, 2) 
  FROM DUAL;

上面的查询返回第二个对象“我在”,但我希望这个返回“需要帮助-请”。同样重要的是要注意,我也不希望-字符直接跟随结果中的第二个对象,但我想从第三个对象开始。

4

1 回答 1

2

由于[^-]只会匹配非连字符,因此您的匹配组将在第一个连字符之后开始,然后在下一个连字符之前停止。要捕获第一个连字符后的所有内容,请尝试:

 SELECT REGEXP_REPLACE(REGEXP_SUBSTR ('I - Am in- Need of Help- Please', '-.+' , 1), '-', '', 1, 1) FROM DUAL;
于 2013-04-09T18:37:21.437 回答