Qt 正则表达式匹配失败的一个原因

在Qt中做正则表达式时,遇到一个很坑爹的问题,还是经验不足导致。

在正则表达式中,有很多需要元字符,是需要使用普通字符加转义符号搭配使用的。比如\w\s。对于这类字符,在Qt中使用时,对\再次进行转义,某则模式串是无法识别为\w\s的。即在Qt中,应该是用"\\w""\\s"来匹配元字符中加了转义符号的字符。对于在元字符集中不需要加转义的字符,在需要将其匹配为普通字符的时候,只需要加一层转义,如"\["

原始字符串:

"\r\r\norangepi3-lts login: "

模式串1:

".+\s+login:\s*$"

此时,使用模式串1去匹配发现并不能匹配成功。但是,使用正则表达式的测试工具测试,这个模式串是能匹配成功的。
在这里插入图片描述

模式串2:

".+\\s+login:\\s*$"

使用模式串2匹配是能匹配成功的。 原因就在于,模式串1在正则测试工具中能匹配成功,是因为它本身是正确的。但是由于在C/C++中,对于\ 符号,是需要转义的,这个是字符串层面的转义,由于模式串是C/C++字符串,所以,\s 元字符是需要被C/C++字符串进行转义,然后,其本身的转义是对于正则表达式语法规则而言的转义。因此需要两层转义,才能匹配成功。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值