使用grep命令无法完整匹配不含逗号的to_char()函数如何解决
解决方法
直接使用如下grep命令即可实现需求:
grep -E -o -i "TO_CHAR\([^,)]+\)" 目标文件名
正则逻辑说明
-i参数保证不区分大小写,可同时匹配TO_CHAR、to_char等任意大小写组合的函数名TO_CHAR\(:匹配函数名加左括号,左括号在扩展正则中属于特殊字符,需要加反斜杠转义[^,)]+:字符集匹配规则,仅匹配既不是逗号、也不是右括号的字符,且至少出现1次,从规则上保证了括号内部不会出现逗号,也不会溢出右括号范围\):匹配闭合的右括号,保证匹配的是完整的闭合函数
你之前的正则错误原因:
- 左括号没有转义,扩展正则下
(会被识别成分组起始符,匹配逻辑完全错位 - 没有写闭合右括号的匹配规则,也没有限制括号内所有内容都不能包含逗号,导致匹配提前终止
匹配结果验证
针对你提供的测试内容,只会命中符合要求的结果:
TO_CHAR(123)to_char(aaa)TO_CHAR('asc')
所有带逗号的函数、未闭合的函数片段都会被自动排除,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者asalthangam
相关产品推荐
相关产品推荐

