Russian Qt Forum
Март 28, 2024, 12:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Регулярные выражения  (Прочитано 2049 раз)
Иволга
Чайник
*
Offline Offline

Сообщений: 58



Просмотр профиля
« : Август 16, 2022, 14:08 »

Здравствуйте

Есть код:
Код:
QProcess proc;
QStringList env = proc.systemEnvironment();
qDebug() << env;
qDebug() << env.indexOf(QRegExp("HOME=*"));


Результат работы кода:
Цитировать
+9.215: DBG: ("QT_QPA_PLATFORM=photon:no_offscreen", "_=/tmp/poSKP/bin/poSKP", "LD_LIBRARY_PATH=:/opt/qt571/x86/lib:/opt/mesa3d/x86/lib:/opt/gcc/lib", "SSH_CONNECTION=192.168.180.1 57359 192.168.180.136 22", "PATH=/sbin:/usr/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/bin:/opt/sbin:/usr/qnx650/host/qnx6/x86/usr/bin:/usr/qnx650/host/qnx6/x86/usr/sbin:/usr/qnx650/host/qnx6/x86/sbin:/usr/qnx650/host/qnx6/x86/bin:/usr/qnx650/host/qnx6/x86/usr/photon/appbuilder", "SHELL=/bin/sh", "MAKEFLAGS=-I/usr/qnx650/target/qnx6/usr/include", "QNX_HELP_HOME_PAGE=/usr/qnx650/target/qnx6/usr/help/product/momentics/bookset.html", "HOSTNAME=modelBM", "USER=root", "TMPDIR=/tmp", "MAIL=/var/spool/mail/root", "PROCESSOR=x86", "HOME=/root", "SSH_CLIENT=192.168.180.1 57359 22", "QNX_HOST=/usr/qnx650/host/qnx6/x86", "QNX_TARGET=/usr/qnx650/target/qnx6", "QNX_HELP_PATH=/usr/qnx650/target/qnx6/usr/help/product", "QNX_CONFIGURATION=/etc/qnx", "LOGNAME=root", "SYSNAME=nto", "PHOTON=/dev/photon")
+9.216: DBG: -1

Почему не нашлась строка "HOME=/root" (присутствует в выводе)?

OC QNX 6.5.0, Qt 5.7.1
« Последнее редактирование: Август 16, 2022, 14:16 от Иволга » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4724



Просмотр профиля WWW
« Ответ #1 : Август 16, 2022, 14:37 »

потому что надо внимательно читать документацию:
Цитировать
Returns the index position of the first exact match
с твоей регуляркой найдутся лишь следующие строки: HOME, HOME=, HOME== и т.д.

лучше пройдись циклом по списку используя str.startsWith(QLatin1String{"HOME="})

другие варианты:
- создать QRegExp в режиме wildcard, тогда по идее твоя регулярка сработает
- использовать регулярку HOME=.*

если планируется в будущем переход на Qt 6, то лучше откажись от QRegExp и используй QRegularExpression
« Последнее редактирование: Август 16, 2022, 14:45 от kambala » Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Иволга
Чайник
*
Offline Offline

Сообщений: 58



Просмотр профиля
« Ответ #2 : Август 16, 2022, 15:13 »

Цитировать
- использовать регулярку HOME=.*
Спасибо, это сработало.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.