无效的正则表达式在Qt但在正则表达式教练这个相同的正则表达式是有效的

Invalid regex in Qt yet in regex coach this same regex is valid

本文关键字:正则表达式 有效 教练 Qt 无效      更新时间:2023-10-16

我有以下regex,这似乎是一个有效的regex根据regex教练,但qt的regexp。isValid表示别的意思。谁能告诉我这个短语是怎么回事?

^[^,.:;*<>[]+"\/]+.cpp$

/不应该是单转义的。它是c++中的一个常规字符。[*需要类内部的正则表达式转义。.需要正则表达式转义,而不是c++转义。

规则:

  • 如果c++需要转义(例如:"),使用单个
  • 如果regex需要转义(例如]),使用双引号
  • 如果regex和c++都需要转义,使用三重格式
  • 当你的regex语法需要一个时,c++需要转义,所以你得到\
  • 当转义自身时,除了自身之外还需要三个,所以得到4。

:

"^[^,.:;*<>[\]+"\/]+\.cpp$"

根据http://doc.qt.nokia.com/latest/qregexp.html Qt/c++需要双转义,所以尝试像这样将每个反斜杠加倍:

^[^,.:;*<>[\]+"\\/]+\.cpp$

我也删除了其中的一些,因为在字符类中它们不需要转义。