Use static QRegularExpression

This commit is contained in:
Jonas Kvinge 2024-08-24 17:23:10 +02:00
parent a2cae06582
commit bc667a6474
31 changed files with 121 additions and 67 deletions

View File

@ -314,8 +314,8 @@ QString CXXDemangle(const QString &mangled_function) {
QString LinuxDemangle(const QString &symbol);
QString LinuxDemangle(const QString &symbol) {
QRegularExpression regex(QStringLiteral("\\(([^+]+)"));
QRegularExpressionMatch match = regex.match(symbol);
static const QRegularExpression regex_symbol(QStringLiteral("\\(([^+]+)"));
QRegularExpressionMatch match = regex_symbol.match(symbol);
if (!match.hasMatch()) {
return symbol;
}

View File

@ -1497,7 +1497,8 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist,
album_info.art_embedded = query.Value(6).toBool();
const QString art_automatic = query.Value(7).toString();
if (art_automatic.contains(QRegularExpression(QStringLiteral("..+:.*")))) {
static const QRegularExpression regex_url_schema(QStringLiteral("..+:.*"));
if (art_automatic.contains(regex_url_schema)) {
album_info.art_automatic = QUrl::fromEncoded(art_automatic.toUtf8());
}
else {
@ -1505,7 +1506,7 @@ CollectionBackend::AlbumList CollectionBackend::GetAlbums(const QString &artist,
}
const QString art_manual = query.Value(8).toString();
if (art_manual.contains(QRegularExpression(QStringLiteral("..+:.*")))) {
if (art_manual.contains(regex_url_schema)) {
album_info.art_manual = QUrl::fromEncoded(art_manual.toUtf8());
}
else {

View File

@ -1163,7 +1163,8 @@ QString CollectionModel::SortText(QString text) {
else {
text = text.toLower();
}
text = text.remove(QRegularExpression(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption));
static const QRegularExpression regex_not_words(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption);
text = text.remove(regex_not_words);
return text;

View File

@ -388,7 +388,8 @@ void Database::ExecSchemaCommandsFromFile(QSqlDatabase &db, const QString &filen
void Database::ExecSchemaCommands(QSqlDatabase &db, const QString &schema, int schema_version, bool in_transaction) {
// Run each command
QStringList commands = schema.split(QRegularExpression(QStringLiteral("; *\n\n")));
static const QRegularExpression regex_split_commands(QStringLiteral("; *\n\n"));
QStringList commands = schema.split(regex_split_commands);
// We don't want this list to reflect possible DB schema changes, so we initialize it before executing any statements.
// If no outer transaction is provided the song tables need to be queried before beginning an inner transaction!

View File

@ -129,7 +129,7 @@ void LocalRedirectServer::WriteTemplate() const {
QString page_data = QString::fromUtf8(page_file.readAll());
page_file.close();
QRegularExpression tr_regexp(QStringLiteral("tr\\(\"([^\"]+)\"\\)"));
static const QRegularExpression tr_regexp(QStringLiteral("tr\\(\"([^\"]+)\"\\)"));
qint64 offset = 0;
forever {
QRegularExpressionMatch re_match = tr_regexp.match(page_data, offset);

View File

@ -240,8 +240,10 @@ void AlbumCoverChoiceController::SaveCoverToFileManual(const Song &song, const A
}
initial_file_name = initial_file_name + QLatin1Char('-') + (song.effective_album().isEmpty() ? tr("unknown") : song.effective_album()) + QLatin1String(".jpg");
initial_file_name = initial_file_name.toLower();
initial_file_name.replace(QRegularExpression(QStringLiteral("\\s")), QStringLiteral("-"));
initial_file_name.remove(QRegularExpression(QLatin1String(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption));
static const QRegularExpression regex_whitespaces(QStringLiteral("\\s"));
initial_file_name.replace(regex_whitespaces, QStringLiteral("-"));
static const QRegularExpression regex_invalid_fat_characters(QLatin1String(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption);
initial_file_name.remove(regex_invalid_fat_characters);
QString save_filename = QFileDialog::getSaveFileName(this, tr("Save album cover"), GetInitialPathForFileDialog(song, initial_file_name), tr(kSaveImageFileFilter) + QStringLiteral(";;") + tr(kAllFilesFilter));

View File

@ -225,11 +225,13 @@ QList<QUrl> GioLister::MakeDeviceUrls(const QString &id) {
for (QString uri : std::as_const(uris)) {
// gphoto2 gives invalid hostnames with []:, characters in
uri.replace(QRegularExpression(QStringLiteral("//\\[usb:(\\d+),(\\d+)\\]")), QStringLiteral("//usb-\\1-\\2"));
static const QRegularExpression regex_url_usb(QStringLiteral("//\\[usb:(\\d+),(\\d+)\\]"));
uri.replace(regex_url_usb, QStringLiteral("//usb-\\1-\\2"));
QUrl url;
if (uri.contains(QRegularExpression(QStringLiteral("..+:.*")))) {
static const QRegularExpression regex_url_schema(QStringLiteral("..+:.*"));
if (uri.contains(regex_url_schema)) {
url = QUrl::fromEncoded(uri.toUtf8());
}
else {
@ -243,7 +245,8 @@ QList<QUrl> GioLister::MakeDeviceUrls(const QString &id) {
url.setScheme(QStringLiteral("ipod"));
}
QRegularExpression device_re(QStringLiteral("usb/(\\d+)/(\\d+)"));
static const QRegularExpression regex_usb_digit(QStringLiteral("usb/(\\d+)/(\\d+)"));
QRegularExpression device_re(regex_usb_digit);
QRegularExpressionMatch re_match = device_re.match(unix_device);
if (re_match.hasMatch()) {
QUrlQuery url_query(url);

View File

@ -37,7 +37,7 @@ MtpConnection::MtpConnection(const QUrl &url, QObject *parent) : QObject(parent)
QString hostname = url.host();
// Parse the URL
QRegularExpression host_re(QStringLiteral("^usb-(\\d+)-(\\d+)$"));
static const QRegularExpression host_re(QStringLiteral("^usb-(\\d+)-(\\d+)$"));
unsigned int bus_location = 0;
unsigned int device_num = 0;

View File

@ -46,6 +46,7 @@ QUrl AzLyricsComLyricsProvider::Url(const LyricsSearchRequest &request) {
QString AzLyricsComLyricsProvider::StringFixup(const QString &text) {
return Utilities::Transliterate(text).remove(QRegularExpression(QStringLiteral("[^\\w0-9\\-]"))).toLower();
static const QRegularExpression regex_words_numbers_and_dash(QStringLiteral("[^\\w0-9\\-]"));
return Utilities::Transliterate(text).remove(regex_words_numbers_and_dash).toLower();
}

View File

@ -46,9 +46,12 @@ QUrl ElyricsNetLyricsProvider::Url(const LyricsSearchRequest &request) {
QString ElyricsNetLyricsProvider::StringFixup(const QString &text) {
static const QRegularExpression regex_illegal_characters(QStringLiteral("[^\\w0-9_,&\\-\\(\\) ]"));
static const QRegularExpression regex_duplicate_whitespaces(QStringLiteral(" {2,}"));
return Utilities::Transliterate(text)
.replace(QRegularExpression(QStringLiteral("[^\\w0-9_,&\\-\\(\\) ]")), QStringLiteral("_"))
.replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" "))
.replace(regex_illegal_characters, QStringLiteral("_"))
.replace(regex_duplicate_whitespaces, QStringLiteral(" "))
.simplified()
.replace(QLatin1Char(' '), QLatin1Char('-'))
.toLower();

View File

@ -156,15 +156,21 @@ QString HtmlLyricsProvider::ParseLyricsFromHTML(const QString &content, const QR
if (!lyrics.isEmpty()) {
lyrics.append(QLatin1Char('\n'));
}
static const QRegularExpression regex_html_tag_a(QStringLiteral("<a [^>]*>[^<]*</a>"));
static const QRegularExpression regex_html_tag_script(QStringLiteral("<script>[^>]*</script>"));
static const QRegularExpression regex_html_tag_div(QStringLiteral("<div [^>]*>×</div>"));
static const QRegularExpression regex_html_tag_br(QStringLiteral("<br[^>]*>"));
static const QRegularExpression regex_html_tag_p_close(QStringLiteral("</p>"));
static const QRegularExpression regex_html_tags(QStringLiteral("<[^>]*>"));
lyrics.append(content.mid(start_lyrics_idx, end_lyrics_idx - start_lyrics_idx)
.remove(QLatin1Char('\r'))
.remove(QLatin1Char('\n'))
.remove(QRegularExpression(QStringLiteral("<a [^>]*>[^<]*</a>")))
.remove(QRegularExpression(QStringLiteral("<script>[^>]*</script>")))
.remove(QRegularExpression(QStringLiteral("<div [^>]*>×</div>")))
.replace(QRegularExpression(QStringLiteral("<br[^>]*>")), QStringLiteral("\n"))
.replace(QRegularExpression(QStringLiteral("</p>")), QStringLiteral("\n\n"))
.remove(QRegularExpression(QStringLiteral("<[^>]*>")))
.remove(regex_html_tag_a)
.remove(regex_html_tag_script)
.remove(regex_html_tag_div)
.replace(regex_html_tag_br, QStringLiteral("\n"))
.replace(regex_html_tag_p_close, QStringLiteral("\n\n"))
.remove(regex_html_tags)
.trimmed());
}
else {

View File

@ -47,9 +47,12 @@ QUrl LetrasLyricsProvider::Url(const LyricsSearchRequest &request) {
QString LetrasLyricsProvider::StringFixup(const QString &text) {
static const QRegularExpression regex_illegal_characters(QStringLiteral("[^\\w0-9_,&\\-\\(\\) ]"));
static const QRegularExpression regex_multiple_whitespaces(QStringLiteral(" {2,}"));
return QString::fromLatin1(QUrl::toPercentEncoding(Utilities::Transliterate(text)
.replace(QRegularExpression(QStringLiteral("[^\\w0-9_,&\\-\\(\\) ]")), QStringLiteral("_"))
.replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" "))
.replace(regex_illegal_characters, QStringLiteral("_"))
.replace(regex_multiple_whitespaces, QStringLiteral(" "))
.simplified()
.replace(QLatin1Char(' '), QLatin1Char('-'))
.toLower()

View File

@ -62,9 +62,12 @@ QUrl LyricFindLyricsProvider::Url(const LyricsSearchRequest &request) {
QString LyricFindLyricsProvider::StringFixup(const QString &text) {
static const QRegularExpression regex_illegal_characters(QStringLiteral("[^\\w0-9_\\- ]"));
static const QRegularExpression regex_multiple_whitespaces(QStringLiteral(" {2,}"));
return Utilities::Transliterate(text)
.remove(QRegularExpression(QStringLiteral("[^\\w0-9_\\- ]")))
.replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" "))
.remove(regex_illegal_characters)
.replace(regex_multiple_whitespaces, QStringLiteral(" "))
.simplified()
.replace(QLatin1Char(' '), QLatin1Char('-'))
.toLower();

View File

@ -315,7 +315,8 @@ void MusixmatchLyricsProvider::HandleLyricsReply(QNetworkReply *reply, LyricsSea
return;
}
if (content_json.contains(QRegularExpression(QStringLiteral("<[^>]*>")))) { // Make sure it's not HTML code.
static const QRegularExpression regex_html_tag(QStringLiteral("<[^>]*>"));
if (content_json.contains(regex_html_tag)) { // Make sure it's not HTML code.
EndSearch(search, url);
return;
}

View File

@ -45,13 +45,17 @@ QUrl SongLyricsComLyricsProvider::Url(const LyricsSearchRequest &request) {
QString SongLyricsComLyricsProvider::StringFixup(QString text) {
static const QRegularExpression regex_illegal_characters(QStringLiteral("[^\\w0-9\\- ]"));
static const QRegularExpression regex_multiple_whitespaces(QStringLiteral(" {2,}"));
static const QRegularExpression regex_multiple_dashes(QStringLiteral("(-)\\1+"));
return text.replace(QLatin1Char('/'), QLatin1Char('-'))
.replace(QLatin1Char('\''), QLatin1Char('-'))
.remove(QRegularExpression(QStringLiteral("[^\\w0-9\\- ]")))
.replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" "))
.remove(regex_illegal_characters)
.replace(regex_multiple_whitespaces, QStringLiteral(" "))
.simplified()
.replace(QLatin1Char(' '), QLatin1Char('-'))
.replace(QRegularExpression(QStringLiteral("(-)\\1+")), QStringLiteral("-"))
.replace(regex_multiple_dashes, QStringLiteral("-"))
.toLower();
}

View File

@ -192,7 +192,10 @@ OrganizeFormat::GetFilenameForSongResult OrganizeFormat::GetFilenameForSong(cons
}
filepath = parts_new.join(QLatin1Char('/'));
if (replace_spaces_) filepath.replace(QRegularExpression(QStringLiteral("\\s")), QStringLiteral("_"));
if (replace_spaces_) {
static const QRegularExpression regex_whitespaces(QStringLiteral("\\s"));
filepath.replace(regex_whitespaces, QStringLiteral("_"));
}
if (!extension.isEmpty()) {
filepath.append(QStringLiteral(".%1").arg(extension));
@ -308,7 +311,8 @@ QString OrganizeFormat::TagValue(const QString &tag, const Song &song) const {
else if (tag == QLatin1String("artistinitial")) {
value = song.effective_albumartist().trimmed();
if (!value.isEmpty()) {
value.replace(QRegularExpression(QStringLiteral("^the\\s+"), QRegularExpression::CaseInsensitiveOption), QLatin1String(""));
static const QRegularExpression regex_the(QStringLiteral("^the\\s+"), QRegularExpression::CaseInsensitiveOption);
value = value.remove(regex_the);
value = value[0].toUpper();
}
}

View File

@ -145,7 +145,8 @@ void OSDDBus::ShowMessageNative(const QString &summary, const QString &message,
QVariantMap hints;
QString summary_stripped = summary;
summary_stripped = summary_stripped.remove(QRegularExpression(QStringLiteral("[&\"<>]"))).simplified();
static const QRegularExpression regex_illegal_characters(QStringLiteral("[&\"<>]"));
summary_stripped = summary_stripped.remove(regex_illegal_characters).simplified();
if (!image.isNull()) {
if (version_ >= QVersionNumber(1, 2)) {

View File

@ -48,12 +48,13 @@ SongList ASXParser::Load(QIODevice *device, const QString &playlist_path, const
QByteArray data = device->readAll();
// Some playlists have unescaped & characters in URLs :(
QRegularExpression ex(QStringLiteral("(href\\s*=\\s*\")([^\"]+)\""), QRegularExpression::CaseInsensitiveOption);
static const QRegularExpression ex(QStringLiteral("(href\\s*=\\s*\")([^\"]+)\""), QRegularExpression::CaseInsensitiveOption);
qint64 index = 0;
for (QRegularExpressionMatch re_match = ex.match(QString::fromUtf8(data), index); re_match.hasMatch(); re_match = ex.match(QString::fromUtf8(data), index)) {
index = re_match.capturedStart();
QString url = re_match.captured(2);
url.replace(QRegularExpression(QStringLiteral("&(?!amp;|quot;|apos;|lt;|gt;)")), QStringLiteral("&amp;"));
static const QRegularExpression regex_html_enities(QStringLiteral("&(?!amp;|quot;|apos;|lt;|gt;)"));
url.replace(regex_html_enities, QStringLiteral("&amp;"));
QByteArray replacement = QStringLiteral("%1%2\"").arg(re_match.captured(1), url).toLocal8Bit();
data.replace(re_match.captured(0).toLocal8Bit(), replacement);

View File

@ -309,7 +309,9 @@ QStringList CueParser::SplitCueLine(const QString &line) {
}
// Let's remove the empty entries while we're at it
return re_match.capturedTexts().filter(QRegularExpression(QStringLiteral(".+"))).mid(1, -1).replaceInStrings(QRegularExpression(QStringLiteral("^\"\"$")), QLatin1String(""));
static const QRegularExpression regex_entry(QStringLiteral(".+"));
static const QRegularExpression regex_exclude(QStringLiteral("^\"\"$"));
return re_match.capturedTexts().filter(regex_entry).mid(1, -1).replaceInStrings(regex_exclude, QLatin1String(""));
}

View File

@ -45,7 +45,8 @@ void ParserBase::LoadSong(const QString &filename_or_url, const qint64 beginning
QString filename = filename_or_url;
if (filename_or_url.contains(QRegularExpression(QStringLiteral("^[a-z]{2,}:"), QRegularExpression::CaseInsensitiveOption))) {
static const QRegularExpression regex_url_schema(QStringLiteral("^[a-z]{2,}:"), QRegularExpression::CaseInsensitiveOption);
if (filename_or_url.contains(regex_url_schema)) {
QUrl url(filename_or_url);
song->set_source(Song::SourceFromURL(url));
if (song->source() == Song::Source::LocalFile) {

View File

@ -50,7 +50,7 @@ SongList PLSParser::Load(QIODevice *device, const QString &playlist_path, const
Q_UNUSED(playlist_path);
QMap<int, Song> songs;
QRegularExpression n_re(QStringLiteral("\\d+$"));
static const QRegularExpression n_re(QStringLiteral("\\d+$"));
while (!device->atEnd()) {
QString line = QString::fromUtf8(device->readLine()).trimmed();

View File

@ -27,13 +27,17 @@ const char *MusixmatchProvider::kApiKey = "Y2FhMDRlN2Y4OWE5OTIxYmZlOGMzOWQzOGI3Z
QString MusixmatchProvider::StringFixup(QString text) {
static const QRegularExpression regex_illegal_characters(QStringLiteral("[^\\w0-9\\- ]"), QRegularExpression::UseUnicodePropertiesOption);
static const QRegularExpression regex_duplicate_whitespaces(QStringLiteral(" {2,}"));
static const QRegularExpression regex_duplicate_dashes(QStringLiteral("(-)\\1+"));
return text.replace(QLatin1Char('/'), QLatin1Char('-'))
.replace(QLatin1Char('\''), QLatin1Char('-'))
.remove(QRegularExpression(QStringLiteral("[^\\w0-9\\- ]"), QRegularExpression::UseUnicodePropertiesOption))
.replace(QRegularExpression(QStringLiteral(" {2,}")), QStringLiteral(" "))
.remove(regex_illegal_characters)
.replace(regex_duplicate_whitespaces, QStringLiteral(" "))
.simplified()
.replace(QLatin1Char(' '), QLatin1Char('-'))
.replace(QRegularExpression(QStringLiteral("(-)\\1+")), QStringLiteral("-"))
.replace(regex_duplicate_dashes, QStringLiteral("-"))
.toLower();
}

View File

@ -332,7 +332,8 @@ QString RadioModel::SortText(QString text) {
else {
text = text.toLower();
}
text = text.remove(QRegularExpression(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption));
static const QRegularExpression regex_words_and_whitespaces(QStringLiteral("[^\\w ]"), QRegularExpression::UseUnicodePropertiesOption);
text = text.remove(regex_words_and_whitespaces);
return text;

View File

@ -109,7 +109,8 @@ void RadioParadiseService::GetChannelsReply(QNetworkReply *reply, const int task
}
QString label = obj_stream[QLatin1String("label")].toString();
QString url = obj_stream[QLatin1String("url")].toString();
if (!url.contains(QRegularExpression(QStringLiteral("^[0-9a-zA-Z]*:\\/\\/"), QRegularExpression::CaseInsensitiveOption))) {
static const QRegularExpression regex_url_schema(QStringLiteral("^[0-9a-zA-Z]*:\\/\\/"), QRegularExpression::CaseInsensitiveOption);
if (!url.contains(regex_url_schema)) {
url.prepend(QLatin1String("https://"));
}
RadioChannel channel;

View File

@ -65,6 +65,10 @@ const double BackendSettingsPage::kDefaultBufferHighWatermark = 0.99;
namespace {
constexpr char kOutputAutomaticallySelect[] = "Automatically select";
constexpr char kOutputCustom[] = "Custom";
static const QRegularExpression kRegex_ALSA_HW(QStringLiteral("^hw:.*"));
static const QRegularExpression kRegex_ALSA_PlugHW(QStringLiteral("^plughw:.*"));
static const QRegularExpression kRegex_ALSA_PCM_Card(QStringLiteral("^.*:.*CARD=.*"));
static const QRegularExpression kRegex_ALSA_PCM_Dev(QStringLiteral("^.*:.*DEV=.*"));
} // namespace
BackendSettingsPage::BackendSettingsPage(SettingsDialog *dialog, QWidget *parent)
@ -398,15 +402,15 @@ void BackendSettingsPage::Load_Device(const QString &output, const QVariant &dev
ui_->radiobutton_alsa_hw->setEnabled(true);
ui_->radiobutton_alsa_plughw->setEnabled(true);
ui_->radiobutton_alsa_pcm->setEnabled(true);
if (device.toString().contains(QRegularExpression(QStringLiteral("^hw:.*")))) {
if (device.toString().contains(kRegex_ALSA_HW)) {
ui_->radiobutton_alsa_hw->setChecked(true);
SwitchALSADevices(ALSAPluginType::HW);
}
else if (device.toString().contains(QRegularExpression(QStringLiteral("^plughw:.*")))) {
else if (device.toString().contains(kRegex_ALSA_PlugHW)) {
ui_->radiobutton_alsa_plughw->setChecked(true);
SwitchALSADevices(ALSAPluginType::PlugHW);
}
else if (device.toString().contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) || device.toString().contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) {
else if (device.toString().contains(kRegex_ALSA_PCM_Card) || device.toString().contains(kRegex_ALSA_PCM_Dev)) {
ui_->radiobutton_alsa_pcm->setChecked(true);
SwitchALSADevices(ALSAPluginType::PCM);
}
@ -623,15 +627,15 @@ void BackendSettingsPage::DeviceStringChanged() {
#ifdef HAVE_ALSA
if (engine()->ALSADeviceSupport(output.name)) {
if (ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^hw:.*"))) && !ui_->radiobutton_alsa_hw->isChecked()) {
if (ui_->lineedit_device->text().contains(kRegex_ALSA_HW) && !ui_->radiobutton_alsa_hw->isChecked()) {
ui_->radiobutton_alsa_hw->setChecked(true);
SwitchALSADevices(ALSAPluginType::HW);
}
else if (ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^plughw:.*"))) && !ui_->radiobutton_alsa_plughw->isChecked()) {
else if (ui_->lineedit_device->text().contains(kRegex_ALSA_PlugHW) && !ui_->radiobutton_alsa_plughw->isChecked()) {
ui_->radiobutton_alsa_plughw->setChecked(true);
SwitchALSADevices(ALSAPluginType::PlugHW);
}
else if ((ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) || ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) && !ui_->radiobutton_alsa_pcm->isChecked()) {
else if ((ui_->lineedit_device->text().contains(kRegex_ALSA_PCM_Card) || ui_->lineedit_device->text().contains(kRegex_ALSA_PCM_Dev)) && !ui_->radiobutton_alsa_pcm->isChecked()) {
ui_->radiobutton_alsa_pcm->setChecked(true);
SwitchALSADevices(ALSAPluginType::PCM);
}
@ -712,11 +716,11 @@ void BackendSettingsPage::SwitchALSADevices(const ALSAPluginType alsa_plugin_typ
for (int i = 0; i < ui_->combobox_device->count(); ++i) {
QListView *view = qobject_cast<QListView*>(ui_->combobox_device->view());
if (!view) continue;
if ((ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^hw:.*"))) && alsa_plugin_type != ALSAPluginType::HW)
if ((ui_->combobox_device->itemData(i).toString().contains(kRegex_ALSA_HW) && alsa_plugin_type != ALSAPluginType::HW)
||
(ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^plughw:.*"))) && alsa_plugin_type != ALSAPluginType::PlugHW)
(ui_->combobox_device->itemData(i).toString().contains(kRegex_ALSA_PlugHW) && alsa_plugin_type != ALSAPluginType::PlugHW)
||
((ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) || ui_->combobox_device->itemData(i).toString().contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) && alsa_plugin_type != ALSAPluginType::PCM)
((ui_->combobox_device->itemData(i).toString().contains(kRegex_ALSA_PCM_Card) || ui_->combobox_device->itemData(i).toString().contains(kRegex_ALSA_PCM_Dev)) && alsa_plugin_type != ALSAPluginType::PCM)
) {
view->setRowHidden(i, true);
}
@ -743,11 +747,11 @@ void BackendSettingsPage::radiobutton_alsa_hw_clicked(const bool checked) {
QString device_new = ui_->lineedit_device->text();
if (device_new.contains(QRegularExpression(QStringLiteral("^plughw:.*")))) {
device_new = device_new.replace(QRegularExpression(QStringLiteral("^plughw:")), QStringLiteral("hw:"));
if (device_new.contains(kRegex_ALSA_PlugHW)) {
device_new = device_new.replace(kRegex_ALSA_PlugHW, QStringLiteral("hw:"));
}
if (!device_new.contains(QRegularExpression(QStringLiteral("^hw:.*")))) {
if (!device_new.contains(kRegex_ALSA_HW)) {
device_new.clear();
}
@ -772,11 +776,11 @@ void BackendSettingsPage::radiobutton_alsa_plughw_clicked(const bool checked) {
QString device_new = ui_->lineedit_device->text();
if (device_new.contains(QRegularExpression(QStringLiteral("^hw:.*")))) {
device_new = device_new.replace(QRegularExpression(QStringLiteral("^hw:")), QStringLiteral("plughw:"));
if (device_new.contains(kRegex_ALSA_HW)) {
device_new = device_new.replace(kRegex_ALSA_HW, QStringLiteral("plughw:"));
}
if (!device_new.contains(QRegularExpression(QStringLiteral("^plughw:.*")))) {
if (!device_new.contains(kRegex_ALSA_PlugHW)) {
device_new.clear();
}
@ -801,7 +805,7 @@ void BackendSettingsPage::radiobutton_alsa_pcm_clicked(const bool checked) {
QString device_new = ui_->lineedit_device->text();
if (!device_new.contains(QRegularExpression(QStringLiteral("^.*:.*CARD=.*"))) && !device_new.contains(QRegularExpression(QStringLiteral("^.*:.*DEV=.*")))) {
if (!device_new.contains(kRegex_ALSA_PCM_Card) && !device_new.contains(kRegex_ALSA_PCM_Dev)) {
device_new.clear();
}
@ -858,7 +862,7 @@ void BackendSettingsPage::FadingOptionsChanged() {
EngineBase::OutputDetails output = ui_->combobox_output->itemData(ui_->combobox_output->currentIndex()).value<EngineBase::OutputDetails>();
if (engine()->type() == EngineBase::Type::GStreamer &&
(!engine()->ALSADeviceSupport(output.name) || ui_->lineedit_device->text().isEmpty() || (!ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^hw:.*"))) && !ui_->lineedit_device->text().contains(QRegularExpression(QStringLiteral("^plughw:.*")))))) {
(!engine()->ALSADeviceSupport(output.name) || ui_->lineedit_device->text().isEmpty() || (!ui_->lineedit_device->text().contains(kRegex_ALSA_HW) && !ui_->lineedit_device->text().contains(kRegex_ALSA_PlugHW)))) {
ui_->groupbox_fading->setEnabled(true);
}
else {

View File

@ -85,7 +85,7 @@ BehaviourSettingsPage::BehaviourSettingsPage(SettingsDialog *dialog, QWidget *pa
if (dir2.exists()) {
codes << dir2.entryList(QStringList() << QStringLiteral("*.qm"));
}
QRegularExpression lang_re(QStringLiteral("^strawberry_(.*).qm$"));
static const QRegularExpression lang_re(QStringLiteral("^strawberry_(.*).qm$"));
for (const QString &filename : std::as_const(codes)) {
QRegularExpressionMatch re_match = lang_re.match(filename);

View File

@ -436,7 +436,8 @@ void StreamingSearchView::SwapModels() {
QStringList StreamingSearchView::TokenizeQuery(const QString &query) {
QStringList tokens(query.split(QRegularExpression(QStringLiteral("\\s+"))));
static const QRegularExpression regex_whitespaces(QStringLiteral("\\s+"));
QStringList tokens = query.split(regex_whitespaces);
for (QStringList::iterator it = tokens.begin(); it != tokens.end(); ++it) {
(*it).remove(QLatin1Char('('));

View File

@ -94,7 +94,10 @@ QString CoverUtils::CoverFilePath(const CoverOptions &options, const Song::Sourc
filename = CoverFilenameFromVariable(options, artist, album);
filename.remove(QRegularExpression(QLatin1String(kInvalidFatCharactersRegex), QRegularExpression::CaseInsensitiveOption)).remove(QLatin1Char('/')).remove(QLatin1Char('\\'));
if (options.cover_lowercase) filename = filename.toLower();
if (options.cover_replace_spaces) filename.replace(QRegularExpression(QStringLiteral("\\s")), QStringLiteral("-"));
if (options.cover_replace_spaces) {
static const QRegularExpression regex_whitespaces(QStringLiteral("\\s"));
filename.replace(regex_whitespaces, QStringLiteral("-"));
}
if (!extension.isEmpty()) {
filename.append(QLatin1Char('.'));
filename.append(extension);

View File

@ -66,7 +66,8 @@ void OpenInFileManager(const QString &path, const QUrl &url) {
if (setting.contains(QLatin1String("Exec"))) {
QString cmd = setting.value(QStringLiteral("Exec")).toString();
if (cmd.isEmpty()) break;
cmd = cmd.remove(QRegularExpression(QStringLiteral("[%][a-zA-Z]*( |$)"), QRegularExpression::CaseInsensitiveOption));
static const QRegularExpression regex(QStringLiteral("[%][a-zA-Z]*( |$)"), QRegularExpression::CaseInsensitiveOption);
cmd = cmd.remove(regex);
# if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
command_params = cmd.split(QLatin1Char(' '), Qt::SkipEmptyParts);
# else

View File

@ -112,7 +112,7 @@ QString DecodeHtmlEntities(const QString &text) {
QString ReplaceMessage(const QString &message, const Song &song, const QString &newline, const bool html_escaped) {
QRegularExpression variable_replacer(QStringLiteral("[%][a-z]+[%]"));
static const QRegularExpression variable_replacer(QStringLiteral("[%][a-z]+[%]"));
QString copy(message);
// Replace the first line
@ -125,7 +125,8 @@ QString ReplaceMessage(const QString &message, const Song &song, const QString &
pos += match.capturedLength();
}
qint64 index_of = copy.indexOf(QRegularExpression(QStringLiteral(" - (>|$)")));
static const QRegularExpression regexp(QStringLiteral(" - (>|$)"));
qint64 index_of = copy.indexOf(regexp);
if (index_of >= 0) copy = copy.remove(index_of, 3);
return copy;

View File

@ -107,7 +107,7 @@ QString PrettyFutureDate(const QDate date) {
QDateTime ParseRFC822DateTime(const QString &text) {
QRegularExpression regexp(QStringLiteral("(\\d{1,2}) (\\w{3,12}) (\\d+) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"));
static const QRegularExpression regexp(QStringLiteral("(\\d{1,2}) (\\w{3,12}) (\\d+) (\\d{1,2}):(\\d{1,2}):(\\d{1,2})"));
QRegularExpressionMatch re_match = regexp.match(text);
if (!re_match.hasMatch()) {
return QDateTime();