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}']
希望匹配的结果是:
[ 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}']
参考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) ]
希望能够帮助您解决问题。
参考GPT和自己的思路:
根据您提供的情况,可以使用以下的正则表达式来匹配所需内容:
[([^[]]+)]
它会匹配中括号内的内容,并将第一组中括号内容提取出来。
因此,应用该正则表达式后,匹配结果如下:
[ 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}']
java的正则不是支持递归的吗?(?R) 试试