2013-05-26 7 views
1

Я пытаюсь заменить \\u0061 и \u0061 к %u0061 с QRegExp,Почему не работает следующее регулярное выражение?

Так что я сделал это,

QString a = "\\u0061"; 
qDebug() << a.replace(QRegExp("\\?\\u"), "%u"); 

Поскольку слэш может появиться один или два раза, так что я использовал ? для представи сначала слэш, но он не работает, что в этом плохого?

EDIT

Благодаря Denomales, она должна быть \\\\u, что представляет \\u, и я использую \\\\+u прямо сейчас.

+0

Я не совсем уверен, что такое марка regex qt4, но некоторые популярные бренды регулярных выражений требуют четырех обратных косых черт, чтобы представить одну обратную косую черту, если вы не можете как-то указать необработанную строку. –

+1

Что произойдет, если вы используете 'QRegExp (" \\ {1,2} u ")'? – lurker

+0

@mbratch не повезло, все еще '\ u0061' – daisy

ответ

2

Описание

согласно QT qregex documentation, смотрите раздел символов и сокращения для наборов символов:

Примечания: Компилятор C++ преобразует слеш строк. Чтобы включить \ в регулярное выражение, введите его дважды, то есть \\. Чтобы совместить символ обратной косой черты, введите его четыре раза, то есть \\\\.

Care, чтобы дать этому попытку:

[\\\\]{1,2}(u)

enter image description here

Я вошел 4 так обратные слэши различные слои языка могут обратный слеш правильно. Затем вложили его в квадратные скобки и потребовали, чтобы он отображался 1 - 2 раза. По существу это должно найти одиночную и двойную обратную косую черту перед письмом u. Вы могли бы просто заменить на %u, как в вашем примере.

В моем примере символ u снят и должен быть возвращен как группа 1, которая будет использоваться позже в вашей замене.

+0

+1, но, пожалуйста, не используйте изображения текста, когда вы можете вводить текст напрямую. Если вы сделали это, чтобы предотвратить потерю обратной косой черты, имейте в виду, что вы можете использовать форматирование кода внутри blockquotes (как я продемонстрировал в своем редактировании). –

+0

Я сделал это, чтобы показать, что текст не был отредактирован или создан мной. Но спасибо за подсказку, я буду помнить об этом в будущем. –