blogs_ken 2023-03-17 10:19 采纳率: 0%
浏览 26
已结题

正则表达式只取第一组中括号内容

select * from CH_OPDC_MAIN main where FD_PROCESS_TYPE is null [ and FD_GROUP in (SELECT REGEXP_SUBSTR('{FDGROUP}', '[^;]+', 1, LEVEL) FROM DUAL CONNECT BY REGEXP_SUBSTR( '{FDGROUP}', '[^;]+', 1, LEVEL) IS NOT NULL) ] [ and FD_WORK_CARD_NUM = '{FDWORKCARDNUM}']

img

希望匹配的结果是:
[ and FD_GROUP in (SELECT REGEXP_SUBSTR('{FDGROUP}', '[^;]+', 1, LEVEL) FROM DUAL CONNECT BY REGEXP_SUBSTR( '{FDGROUP}', '[^;]+', 1, LEVEL) IS NOT NULL) ]

[ and FD_WORK_CARD_NUM = '{FDWORKCARDNUM}']

  • 写回答

3条回答 默认 最新

  • 追cium 2023-03-17 10:25
    关注

    参考GPT和自己的思路:

    您好,根据您的要求,需要使用正则表达式只取第一组中括号内容,可以使用以下的正则表达式:

    /[(.*?)]/

    这个正则表达式会匹配最外层的中括号,并且只会取第一组中括号内容。应用到您的问题中,您需要使用这个正则表达式对整个字符串进行匹配,然后只保留第一个匹配结果即可。

    示例代码如下:

    str = "select * from CH_OPDC_MAIN main where FD_PROCESS_TYPE is null [ and FD_GROUP in (SELECT REGEXP_SUBSTR('{FDGROUP}', '[^;]+', 1, LEVEL) FROM DUAL CONNECT BY REGEXP_SUBSTR( '{FDGROUP}', '[^;]+', 1, LEVEL) IS NOT NULL) ] [ and FD_WORK_CARD_NUM = '{FDWORKCARDNUM}']";

    var re = /[(.*?)]/;
    var result = str.match(re);
    console.log(result[0]);

    执行上面的代码,输出结果应该是:

    [ and FD_GROUP in (SELECT REGEXP_SUBSTR('{FDGROUP}', '[^;]+', 1, LEVEL) FROM DUAL CONNECT BY REGEXP_SUBSTR( '{FDGROUP}', '[^;]+', 1, LEVEL) IS NOT NULL) ]

    希望能够帮助您解决问题。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月25日
  • 创建了问题 3月17日

悬赏问题

  • ¥15 Windows X86 远线程注入问题解惑
  • ¥15 Vs2022安装时黑框闪退无反应
  • ¥15 嵌入式设备网口down后再up时不能link?
  • ¥15 关于区块链和边缘计算
  • ¥15 做一个简单项目,用Python分析共享单车的数据
  • ¥20 在使用CESM2.2.0模型进行case.submit过程中出现如下错误(关键词-Map)
  • ¥15 有办法改变通过wifi进入的网站的设置吗
  • ¥15 label_studio
  • ¥15 请教如何phython发邮件
  • ¥15 linux系统安装问题