select REGEXP_SUBSTR('<p><img height="284" alt="" width="450" src="/userfiles/image/img.jpg" />请填写内容<img height="284" alt="" width="450" src="/userfiles/image/img2.JPG" /></p>',
  2 '/USERFILES.*?'||'\.JPG',
  3 1,
  4 1,
  5 'i') sd
  6 from dual
  7 ;
--re:
--/userfiles/image/img.jpg
1:  '/USERFILES.*?'||'\.JPG' 匹配模式改成: '/USERFILES.*?\.JPG' 结果也一样,分开写实为了便于阅读吗?
2:  .*? 去掉人一个符号,都不能得到结果,
3: .?* 将? 和* 换个位置得到的结果是:/userfiles/image/img.jpg" />请填写内容<img height="284" alt="" width="450" src="/userfiles/image/img2.JPG   为什么?附上:
特殊字符:
'^' 匹配输入字符串的开始位置,在方括号表达式中使用,此时它表示不接受该字符集合。
'$' 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 'n' 或 'r'。
'.' 匹配除换行符 n之外的任何单字符。
'?' 匹配前面的子表达式零次或一次。
'*' 匹配前面的子表达式零次或多次。
'+' 匹配前面的子表达式一次或多次。
'( )' 标记一个子表达式的开始和结束位置。
'[]' 标记一个中括号表达式。
'{m,n}' 一个精确地出现次数范围,m=<出现次数<=n,'{m}'表示出现m次,'{m,}'表示至少出现m次。
'|' 指明两项之间的一个选择。例子'^([a-z]+|[0-9]+)$'表示所有小写字母或数字组合成的字符串。

解决方案 »

  1.   

    贪婪匹配(greedy):它会匹配尽可能多的字符。它首先看整个字符串,如果不匹配,对字符
    串进行收缩;遇到可能匹配的文本,停止收缩,对文本进行扩展,当发现匹配的文本时,它
    不着急将该匹配保存到匹配集合中,而是对文本继续扩展,直到无法继续匹配 或者 扩展完
    整个字符串,然后将前面最后一个符合匹配的文本(也是最长的)保存起来到匹配集合中。所
    以说它是贪婪的。 
    惰性匹配(lazy):它会匹配尽可能少的字符,它从第一个字符开始找起,一旦符合条件,立
    刻保存到匹配集合中,然后继续进行查找。所以说它是懒惰的。默认使用贪婪匹配,在次数限定元字符后加?转为惰性匹配?   ??   匹配0个或 1 个 
    +   +?   匹配1个或多个 
    *   *?   匹配0个或多个 
    {n}   {n}?   匹配n个 
    {n,m} {n,m}?   匹配n个或 m 个 
    {n,}  {n,}?   匹配n个或多个