regex 移除支架外的所有对象

wsewodh2  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(113)

我需要你的帮助。
我使用Oracle SQL,需要删除括号外的所有内容。例如:

- Stabilization loans, mortgage lending (StabL ML) => StabL ML
 - Refinanced loans and restructured loans (RefL RL) => RefL RL
 - Individual reserve (IR) => IR

我试着用类似的东西,但它不工作

select regexp_replace(example, '\([A-Za-z ]\)', '') from dual;

我将感激任何帮助!

rkue9o1l

rkue9o1l1#

尽管您使用了.*\(|\).*REGEXP_REPLACE这样的模式might consider,但我还是希望您使用

REGEXP_SUBSTR(example, '\(([^()]*)\)', 1, 1, 'i', 1)

请参阅the DBfiddle

  • 详细数据 *:
  • \(-一个(字符
  • ([^()]*)-组1:除括号外的任何零个或多个字符
  • \)-一个)字符

1, 1, 'i', 1使正则表达式引擎只从字符串中的第一个字符开始搜索一次(以不区分大小写的方式,尽管这在这里并不十分重要),最后一个1提取组1的值。

qgelzfjb

qgelzfjb2#

你的算法是部分正确的。但是你必须加上表达式是“+”
'\([A-Za-z ]+\)'
Regex101

Regex101
“([A-Za-z].+)([(])([A-Za-z].+)([)])”
你可以用上面的代码替换“$3”。但是我认为这个代码对你更有用。

apeeds0o

apeeds0o3#

您可以使用此选项:

SELECT  REGEXP_SUBSTR ( 'Stabilization loans, mortgage lending (StabL ML)', '\( *([^)]*) *\)', 1, 1, NULL, 1) FROM    dual;

相关问题