ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

регулярка

 

4875
ValdeZ @ValdeZ
Всем привет. Есть кто-то разбирающийся в регулярных выражениях?
Нужна регулярка, которая бы выполняла следующее:

на входе - число в HEX
регулярка должна отсеивать эти числа и возвращать только такие:
1. В числе нет больше 3 цифр подряд (любых, просто чтобы не попадалось больше 3 цифр рядом)
2. В числе нет больше 2 букв подряд (аналогично)

к сожалению в regexp не разбираюсь, но задание и работа очень горит
заранее благодарен за помощь или подсказки

Отредактировано ValdeZ - 18.12.2011
284
arteshuk @arteshuk
я думаю, для начало это число в HEX надо преобразовать у "удобоваримый" вид....а уж потом regexp "подтянуть".....

4875
ValdeZ @ValdeZ
arteshuk пишет:

я думаю, для начало это число в HEX надо преобразовать у "удобоваримый" вид....а уж потом regexp "подтянуть".....

нет-нет
в моей задаче нужно именно разбирать HEX-числа
скажем, мне ими нужно работать не в их числовом значении
эти числа являются частью некоторых стром

2970
удалён @Foggy
Кому лень читать, сразу пишу: задачу я не решил.
Сегодня в 2 ночи (мск) увидел эту тему и заинтересовался решением. Дай-ка, думаю, и помогу человеку и регулярки заодно изучу. В течение 3 часов изучал регулярки, ибо прежде почти совсем их не понимал. В итоге начал пытаться решить проблему. Убил ещё три часа на это. Облазал кучу форумов по регуляркам, кучу сайтов, кучу статей перечитал, изучил кучу тонкостей. Но в итоге так и не смог решить эту с виду лёгкую задачу. Если кто будет пытаться её решить, а я на это очень надеюсь, ибо очень интересно решение того, на что я потратил 6 часов и не решил. Почитайте мои рассуждения и попытки под катом:
Показать текст

ValdeZ, скажи, пожалуйста, зачем нужна эта проверка? Я вот ею заморочился, чтобы регулярки изучить, но зачем она требуется, так и не понял. Если бы было не больше двух символов A-Fa-f0-9, то это и решить я ********** как и понимаю, зачем нужно (понимаю такое ограничение палитры, типа safe colors). Но зачем тебе то, что ты указал?

4875
ValdeZ @ValdeZ
Foggy пишет:

Кому лень читать, сразу пишу: задачу я не решил.
Сегодня в 2 ночи (мск) увидел эту тему и заинтересовался решением. Дай-ка, думаю, и помогу человеку и регулярки заодно изучу. В течение 3 часов изучал регулярки, ибо прежде почти совсем их не понимал. В итоге начал пытаться решить проблему. Убил ещё три часа на это. Облазал кучу форумов по регуляркам, кучу сайтов, кучу статей перечитал, изучил кучу тонкостей. Но в итоге так и не смог решить эту с виду лёгкую задачу. Если кто будет пытаться её решить, а я на это очень надеюсь, ибо очень интересно решение того, на что я потратил 6 часов и не решил. Почитайте мои рассуждения и попытки под катом:
Показать текст

ValdeZ, скажи, пожалуйста, зачем нужна эта проверка? Я вот ею заморочился, чтобы регулярки изучить, но зачем она требуется, так и не понял. Если бы было не больше двух символов A-Fa-f0-9, то это и решить я ********** как и понимаю, зачем нужно (понимаю такое ограничение палитры, типа safe colors). Но зачем тебе то, что ты указал?

В общем, в моём случае мне приходится парсить ссылки в которых есть нужная мне часть в виде этого злого HEX. На вход поступают сотни тысяч ссылок, из которых мне нужна лишь определённая группа (критерии по которой я указал выше). Не с цветом, нет. В итоге, поступает типа: ********** - это подходит, а ********** - не подходит
Спасибо огромное, конечно. Твоё благородство натолкнуло меня на то, чтобы и самому засесть почитать про регулярки материал 😀

Отредактировано ValdeZ - 18.12.2011
2970
удалён @Foggy
Жестяк. Вряд ли выйдет. Рекомендую обрабатывать js или php функциями, иначе вряд ли выйдет. Если нет такой возможности - стоит об этом забыть, я думаю. Или, может быть, ты что-нибудь придумал?

4875
ValdeZ @ValdeZ
Foggy пишет:

Жестяк. Вряд ли выйдет. Рекомендую обрабатывать js или php функциями, иначе вряд ли выйдет. Если нет такой возможности - стоит об этом забыть, я думаю. Или, может быть, ты что-нибудь придумал?

Придумал: с помощью танцев с бубном из всех 8-разрядных 16-ричных чисел выбрал всё что не нужно и составил список вариантов для проверки.
Т.е. проверяю всё на соответствие со словарём.

2970
удалён @Foggy
И как оно в итоге выглядит?

4875
ValdeZ @ValdeZ
Foggy пишет:

И как оно в итоге выглядит?

исходники по-позже
пока что я остановился на составлении самого словаря

сам словарь делался так:
на джаваскрипте делался цикл, который выводил все числа от 1 до 4294967295 в 16-ричном формате (в много этапов, не сразу от 1 до ..., потому что при попытках сделать за один проход браузер тупо ложил систему)
потом копировал это всё в ноутпад и с помощью различных поисковых запросов по файлу удалялось всё ненужное
в итоге вышло в много раз меньше вариантов, чем было изначально

сделаю по этому варианту
скорее всего на Питоне
потом, если придумаю как поступить с изначальной идеей - сделаю по другому и сравню скорости выполнения
доведу программу до ума - скину тебе первому

P.S. 9-я мозилла вместо вывода цикла из 200 000 16-ричных чисел тупо ложит систему
9-й ИЕ (64-х разрядный) выполняет задачу за 15 секунд

да уж)

Отредактировано ValdeZ - 23.12.2011