Мучаю boost regex.
Нужно отыскивать строки, в которых есть такая подстрока
такого вида <e1><e7><00e1>
либо с отсутствущим средним тэгом <5c><005с>
Пытаюсь как-то так
(<[0-9a-f]{2}>)(<[0-9a-f]{2}>){0,1}(<[0-9a-f]{4}>)
Но находит фигню Ищет ещё зачем то в найденном.
Первый тэг это код cp1251, послединий - utf-8. Собственно, конечная цель заключается в замене значения последнего тэга на кирилическое соответствие первому. Если есть средний тэг, то его нужно как-то игнорировать.
Уже не один час бьюсь. Чё-то не очень мне понятны правила про работу с круглыми скобками и повторами, как-то не так они работают.
regex: повторы
Модератор: Модераторы разделов
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: regex: повторы
В "<5c><005с>" "с" - русская, что не попадает под шаблон "[0-9a-f]".
-
- Сообщения: 83
- ОС: AgiliaLinux
Re: regex: повторы
Это конечно же не так. В оригинальном файле все буквы правильные. Я копирую в онлайн-тестеры содержимое из файла. Огромный файл создавал компьютер и опечаток таких там нет.
Моя проблема именно в непонимании, как надо составить правильный шаблон.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 83
- ОС: AgiliaLinux
Re: regex: повторы
Ну вот ссылка на тестилку pcre.ru: длинный урл
И в ней оно работает не так, как мне хочется.
И в ней оно работает не так, как мне хочется.
-
- Модератор
- Сообщения: 20996
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: regex: повторы
А как Вам хочется? Что не так-то?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 83
- ОС: AgiliaLinux
Re: regex: повторы
Распарсивает самую первую строку и находит в ней четыре результата. Первый результат - всё вместе; второй, третий и четвёртый - каждый из трёх тэгов отдельно. Должно показывать только всё вместе. Должно было выдать 23 результата, а выдало 91.
-
- Модератор
- Сообщения: 20996
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: regex: повторы
А зачем тогда скобок наставили? Я думал, специально.
<[0-9a-f]{2}>(?:<[0-9a-f]{2}>)?<[0-9a-f]{4}>
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 83
- ОС: AgiliaLinux
Re: regex: повторы
Ну я написал выше, что не сильно понимаю работу скобок.