【发布时间】:2017-05-03 17:19:39
【问题描述】:
我正在使用正则表达式
"\x1B[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]"
从字符串中去除 ANSI 控制代码。这适用于 sed,但如果我将该字符串提供给 QRegularExpression,它将无法匹配控制字符。我试过使用 QRegularExpression::escape() 函数;尝试只转义前导 '\x1B';尝试使用 '\e' 代替它,但都无济于事。
【问题讨论】:
-
尝试将其声明为
auto re = QRegularExpression { R"\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mK]" };。如果它没有按预期工作,请尝试使用\x{1B}而不是\x1B。 -
请将输入字符串共享为字符串文字。
-
Wiktor 使用原始字符串的响应解决了问题。
-
SixDegrees,我发布了答案并进行了一些解释。请注意,
[m|K]也可能匹配|。 -
我在下面发布了答案。一旦您有时间,请随时接受/投票(接受有效答案您还将获得 2 分)。
标签: regex qt qregexp qregularexpression