【发布时间】:2023-04-06 16:45:01
【问题描述】:
我需要在我的 sql 脚本(即 Oracle 外连接表达式)中查找出现的“(+)”。意识到“+”、“(”和“)”都是特殊的正则表达式字符,我尝试了:
grep "\(\+\)" *现在这确实返回了“(+)”的出现,但也返回了其他行。 (似乎任何在同一行上带有打开和关闭括号的东西。)回想一下,括号仅对扩展的 grep 是特殊的,我尝试了:
grep "(\+)" * grep "(\\+)" *这两个都只返回包含“()”的行。所以假设“+”不能被转义,我尝试了一个老把戏:
grep "([+])" *这行得通。我使用非正则表达式工具交叉检查了结果。
问题:有人能解释一下“+”字符到底是怎么回事吗?有没有更简洁的方式来匹配“(+)”?
(我正在使用 cygwin grep 命令。)
编辑:感谢您的解决方案。 -- 现在我看到,根据 Bruno 引用的 GNU grep 手册,“\+”在 basic 表达式中使用时赋予“+”扩展的含义,因此匹配一个或多个 "("s 后跟一个 ")"。在我的文件中总是“()”。
【问题讨论】: