如何转换此 pcre 正则表达式以用于 Oracle 的 REGEXP_SUBSTR?
How do I convert this pcre regex to be used with Oracle's REGEXP_SUBSTR?
我有这个 pcre
正则表达式,我想将其移植到 Oracle 支持的正则表达式:
^.*pdf_(\w+-\w+).*$
旨在匹配且仅匹配加粗的内容:
roundBox indent pdf_placement
pdf_grade
indent pdf_placement1 roundBox
Oracle 正则表达式语法中的等效表达式是什么?
编辑:
我尝试了 sln
在评论中的建议:
SELECT REGEXP_SUBSTR(class, '^.*pdf_(\w+(?:-\w+)*).*$') FROM ...
我得到的只是返回的整个值,而不仅仅是匹配项:
roundBox indent pdf_placement
而不是
placement
我最后的表达方式是:
pdf_(\w+(?-\w*)*)
完整的 SELECT
子句如下所示:
SELECT REGEXP_SUBSTR(class, 'pdf_(\w+(-\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, 0, 'i')
7 from t;
REGEXP_REPLACE(TXT,'^.*PDF_(\W
--------------------------------------------------------------------------------
placement
grade
placement1
我使用参数 'i' 使其不区分大小写并且也可以使用大写字母 PDF。有需要的可以随意使用。
我有这个 pcre
正则表达式,我想将其移植到 Oracle 支持的正则表达式:
^.*pdf_(\w+-\w+).*$
旨在匹配且仅匹配加粗的内容:
roundBox indent pdf_placement
pdf_grade
indent pdf_placement1 roundBox
Oracle 正则表达式语法中的等效表达式是什么?
编辑:
我尝试了 sln
在评论中的建议:
SELECT REGEXP_SUBSTR(class, '^.*pdf_(\w+(?:-\w+)*).*$') FROM ...
我得到的只是返回的整个值,而不仅仅是匹配项:
roundBox indent pdf_placement
而不是
placement
我最后的表达方式是:
pdf_(\w+(?-\w*)*)
完整的 SELECT
子句如下所示:
SELECT REGEXP_SUBSTR(class, 'pdf_(\w+(-\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, 0, 'i')
7 from t;
REGEXP_REPLACE(TXT,'^.*PDF_(\W
--------------------------------------------------------------------------------
placement
grade
placement1
我使用参数 'i' 使其不区分大小写并且也可以使用大写字母 PDF。有需要的可以随意使用。