Название: ReqExp Отправлено: juvf от Июнь 15, 2023, 07:32 Ни как не могу составить регулярку
Исходная строка такая #address = 1234 Т.е. пользователь обязан написать '#address', затем '=', затем численное значение. Символ '=' можно отделить, а можно и не отделять. Человеку удобно все варианты #address=1234 #address= 1234 #address = 1234 Это всё одно и тоже. Отделять можно хоть чем, хоть пробелами, хоть табами, хоть в перемешку, хоть не отделять. Машина принимаю строку в QString и пытаюсь удалить "address=" и оставить только '1234'. Код: line_.remove(QRegExp("#asd[\\s+]?=[\\s+]?")); Если между '#address' и '=' только пробелы или только табы - то работает. Если вперемешку - то не работает. допустим adress/пробел/пробел/таб/пробел/=/таб/пробел/таб/1234 - такую строку регулярка не может. Хотя \s+ - это пробельные символы (табы и/или пробелы). Онлайн генератор дает такую же герулярку (https://regex-generator.olafneumann.org/?sampleText=%23address%09%20%20%09%3D%20%20%09%20%200xa1&flags=i&selection=8%7CWhitespaces,13%7CWhitespaces) на табы+пробелы. Для Qt может нужна особая регулярка? Название: Re: ReqExp Отправлено: kambala от Июнь 15, 2023, 09:24 "^#address\\s*=\\s*"
звездочка означает «0 и больше раз», а плюсик — «минимум один раз» крышка спереди говорит, что это начало строки (может тебе она не нужна) Название: Re: ReqExp Отправлено: juvf от Июнь 15, 2023, 09:47 "^#address\\s*=\\s*" Спасибо.звездочка означает «0 и больше раз», а плюсик — «минимум один раз» крышка спереди говорит, что это начало строки (может тебе она не нужна) работает и line_.remove(QRegExp("#asd[\\s+]?=[\\s+]?")); и line_.remove(QRegExp("#asd[\\s*]?=[\\s*]?")); может из-за ? работает '\s+'? вот так не работает line_.remove(QRegExp("#asd[\\s*]=[\\s*]")); убрал ? и [] - заработало. И ^ тоже лишним не будет. Спасибо. Название: Re: ReqExp Отправлено: kambala от Июнь 15, 2023, 10:39 [\s+] означает «можно пустой символ или плюсик» (квадратные скобки задают набор доступных символов)
? означает «предыдущий токен может быть 0 или 1 раз» думаю, теперь ты поймешь почему твои варианты не работали |