0

[!< & >!] 内の文字列を取得するために regexp_substr を使用しようとしています。以下のステートメントがありますが、「To test with regexp_substr.>!]」が返されました。>!] を除外して文字列だけを返すにはどうすればよいですか?

select regexp_substr('[!< regexp_substr.>!]','[^[!<]+>!]') from dual

4

1 に答える 1

0

このメソッドは、開始文字シーケンスと終了文字シーケンスの間にあるすべてのものをグループ化し (少なくとも 1 文字がそこにあると仮定)、その文字グループだけを返します。正規表現エンジンが文字クラスを参照していると認識しないように、角かっこをエスケープする必要があります。この例では、最初の文字の前にスペースがあり、出力に保持されていることに注意してください。

select regexp_substr('[!< To test with regexp_substr.>!]','\[!<(.+)>!\]', 1, 1, 'i', 1) from dual;


STRING_EXAMPLE              
----------------------------
 To test with regexp_substr.
于 2015-04-08T19:20:34.157 に答える