正则表达式(RE)匹配带引号的字符串

本文探讨了使用grep工具匹配包含引号的字符串时遇到的问题及解决方案。文章指出,简单的转义并不能解决问题,并介绍了如何正确地使用单双引号来完成匹配任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用grep匹配字符串时,对于带引号("与')的匹配出现了问题。想当然的认为把引号用反斜线()转义就可以了,但是实际是不行的。 grep的帮助给的例子是grep -i 'hello world' menu.h main.c 也就是说,标准的用法需要将正则表达式用单引号引起来,当然双引号也是可以的。但是,如果要匹配含引号的字符串,如果用反斜线转义,比如想用  grep  '^'this' 来匹配以  'this  开头的行是不行的,grep会认为 '^'  是一个字符串,而后边的 ' 缺少一个与其配对,所以命令行会提示你继续输入。双引号也是这样的。 如果要匹配单引号,可以把表达式用双引号引起来,此时引号只做普通字符,不需要转义。如:可以用 "^'this" 来匹配以  'this 开头的字符串,匹配双引号的时候表达式就用单引号。 另外,grep 后面的RE其实可以不用引号引起来,直接写就可以。但是可能是不标准,但是比较方便。这样,就没有引号的问题了。但这样如果RE中出现引号,就要用转义了。例如:可以用 ^"this 匹配以 "this  开头的字符串。 另外网上还提到了用  42  uxxx 等方法匹配引号,但是可能只适合不同的编程语言,在grep工具中不能用。 其实grep的manpage里面提到的需要转义的字符,并不包括引号。
In basic regular expressions the meta-characters ?, +, {, |, (, and ) lose their special meaning; instead use the backslashed versions ?, +, {, |, (, and ).
所以,引号的标准匹配方法也不得而知了。

转载于:https://www.cnblogs.com/leetom/archive/2010/06/13/2845872.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值