我对正则表达式很陌生。 我被困在一个特定的问题上,我无法继续。 非常感谢正则表达式专家的指导。
1( 下面是需要使用正则表达式匹配的 pl/sql 字符串。
TYPE T_OM_EPV2_LINE_REC_TYPE
IS
RECORD
(
ORDER_NO PS_OM_EPV2_LINE.ORDER_NO%type,
OM_SUBMIT_NBR PS_OM_EPV2_LINE.OM_SUBMIT_NBR%type);
2(这是我尝试使用的正则表达式
^TYPE [w]+[s]IS[s]RECORD[s]([s]([w]+ [w]+.[w]+%type.)
3(我能够匹配,
TYPE T_OM_EPV2_LINE_REC_TYPE
IS
RECORD
(
ORDER_NO PS_OM_EPV2_LINE.ORDER_NO%type,
但不是,OM_SUBMIT_NBR PS_OM_EPV2_LINE.OM_SUBMIT_NBR%type
(最后一行(
4(根本原因是正则表达式试图匹配最后一行,但它没有前四行。
5(我尝试捕获和重复正则表达式概念(重复最后一行之前将其作为一个组(,但仍然没有实现输出。
请对此提出任何建议或见解?
由于最后一行没有嵌套括号,因此可以使用
^TYPE w+s+ISs+RECORDs+([^()]*)
请参阅正则表达式演示。
详
^
- 字符串或行的开头TYPE
- 文本子字符串w+
- 1+ 字字符s+
- 1+ 空格IS
- 文本子字符串s+
- 1+ 空格RECORD
- 文本子字符串s+
- 1+ 空格(
-(
炭[^()]*
- 除(
和)
以外的 0+ 个字符)
- 一个)
字符。
若要管理嵌套括号,可以将([^()]*)
替换为(((?:[^()]++|(?1))*))
。请参阅此正则表达式演示。
如果只想匹配到最后;
的任何文本,请使用^TYPE w+s+ISs+RECORDs+(([sS]*))
。请参阅此演示。