Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将此pcre正则表达式转换为与Oracle的REGEXP\u SUBSTR一起使用?_Regex_Oracle_Pcre - Fatal编程技术网

如何将此pcre正则表达式转换为与Oracle的REGEXP\u SUBSTR一起使用?

如何将此pcre正则表达式转换为与Oracle的REGEXP\u SUBSTR一起使用?,regex,oracle,pcre,Regex,Oracle,Pcre,我有一个pcre正则表达式,我想将其移植到Oracle支持的正则表达式: ^.*pdf\uw+-\w+*$ 设计用于匹配且仅限于粗体字: 圆盒缩进pdf_放置 pdf\U等级 缩进pdf_位置1圆框 Oracle正则表达式语法中的等效表达式是什么 编辑: 我尝试了sln在评论中的建议: 从以下位置选择REGEXP\u SUBSTRclass,'^.*pdf\uw+?:-\w+*.*$' 我得到的只是返回的整个值,而不仅仅是匹配值: roundBox indent pdf_placement 而

我有一个pcre正则表达式,我想将其移植到Oracle支持的正则表达式:

^.*pdf\uw+-\w+*$

设计用于匹配且仅限于粗体字:

圆盒缩进pdf_放置

pdf\U等级

缩进pdf_位置1圆框

Oracle正则表达式语法中的等效表达式是什么

编辑:

我尝试了sln在评论中的建议:

从以下位置选择REGEXP\u SUBSTRclass,'^.*pdf\uw+?:-\w+*.*$'

我得到的只是返回的整个值,而不仅仅是匹配值:

roundBox indent pdf_placement
而不是

placement

我最后用的表达是:

pdf\uw+?-\w**

总之,SELECT子句如下所示:


选择REGEXP\u SUBSTRclass,'pdf\uw+-\w**',1,1,'i',1 FROM…

我最后使用的表达式是:

pdf\uw+?-\w**

总之,SELECT子句如下所示:


选择REGEXP\u SUBSTRclass,'pdf\uw+-\w**',1,1,'i',1 FROM…

您可以采取替换不需要的内容的方法:

SQL> with t (txt) as (
  2  select 'roundBox indent pdf_placement' from dual union all
  3  select 'PDF_grade' from dual union all
  4  select 'indent pdf_placement1 roundBox' from dual
  5  ) -- end of sample data
  6  select regexp_replace(txt, '^.*pdf_(\w+).*$', '\1', 1, 0, 'i')
  7    from t;
REGEXP_REPLACE(TXT,'^.*PDF_(\W
--------------------------------------------------------------------------------
placement
grade
placement1

我使用参数“I”使其不区分大小写,并使用大写字母PDF。您可以根据需要随意使用它。

您可以采取替换不需要的内容的方法:

SQL> with t (txt) as (
  2  select 'roundBox indent pdf_placement' from dual union all
  3  select 'PDF_grade' from dual union all
  4  select 'indent pdf_placement1 roundBox' from dual
  5  ) -- end of sample data
  6  select regexp_replace(txt, '^.*pdf_(\w+).*$', '\1', 1, 0, 'i')
  7    from t;
REGEXP_REPLACE(TXT,'^.*PDF_(\W
--------------------------------------------------------------------------------
placement
grade
placement1

我使用参数“I”使其不区分大小写,并使用大写字母PDF。您可以根据需要随意使用它。

语法是基本正则表达式,应该是可传输的。但是,如果您想具体说明,这里有一个很好的子表达式\w+?:-\w+*@sln Oracle不支持非捕获组。@MT0-Oracle是否自己生产正则表达式引擎?语法是基本正则表达式,应该是可传输的。但是,如果您想说得具体一点,这里有一个很好的子表达式\w+?:-\w+*@sln Oracle不支持非捕获组。@MT0-Oracle是否自己生产正则表达式引擎?以及稍快一点的版本pdf\w+-\w?*和稍快一点的版本pdf\w+-\w*