Мне нужна помощь в создании некоторых замен строк, с регулярными выражениями.Регулярные выражения, возвращающие пустые строки
Задача: масштабировать шрифты в сгенерированной строке html. Я использую Qt, должен работать в Qt 4.8.
Я определил некоторое регулярное выражение, чтобы отделить раздел, содержащий размеры шрифта, и протестировал его (https://regex101.com/r/Y0W13N/1). Я не знаю, правильное или оптимальное, но тестовый сайт, похоже, дает мне правильный результат - но я, кажется, не получить ни одного матча в моем коде:
// get string between "<span style=\"" and "\">" (escaped quotes and backslashes)
QRegExp rx1("<span style=\"(?:=([^\\]]+))?(.*?);\">");
int pos = rx1.indexIn(text);
QStringList listSpans1 = rx1.capturedTexts();
qDebug() << listSpans1; // outputs ("", "", "")
// get string between "<p style=\"" and "\">"
QRegExp rx2("<p style=\"(?:=([^\\]]+))?(.*?);\">");
pos = rx2.indexIn(text);
QStringList listSpans2 = rx2.capturedTexts();
qDebug() << listSpans2; // outputs ("", "", "")
text
Я тестирую с является
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Some Font'; font-size:15pt; color:#000000;">Te</span><span style=" font-family:'Some Font'; font-size:9pt; color:#000000;">xt</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Some Font'; font-size:9pt; color:#000000;"></p>
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Some Font'; font-size:9pt; color:#000000;"> B</span><span style=" font-family:'Some Font'; font-size:15pt; color:#000000;">ox</span></p>
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'Some Font'; font-size:18pt; color:#000000;"></p></body></html>"
Я получаю пустые строки из qDebug
- Я не понимаю, почему, учитывая, что испытательный полигон показывает мне corr и т. д., и что я, похоже, получаю спички? Почему пусто ...
(Следующий шаг - отделить часть шрифта ... определить размер шрифта ... масштабировать его ... заменить обратно ... кажется очень сложным для такой простой операции, но я не мог найти более простой способ)
Регулярные выражения, которые я сделал, похоже, работают на тестовом сайте, но они не работают в моем коде, я не знаю, почему, очевидно, у меня нет опыта с регулярным выражением.
Пожалуйста, помогите получить мои регулярные выражения работают ... Спасибо
побега каждого специальным символом еще один раз - например, \ "-> \\\", \\ -> \\\\ и т. д. –
Используйте '' regex + 'rx1.setMinimal (true)'. То же самое со вторым регулярным выражением ('
'/'Rx2.setMinimal (true)') –
@Wiktor Stribiżew вы можете поместить это как ответ, пожалуйста? – Thalia