Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

Помогите Еще регексы.

Discussion in 'Разработка плагинов для новичков' started by Blc_Dragon, Feb 4, 2017.

  1. Автор темы
    Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    Доброго времени суток, форумчане.
    Т.к. хорошие люди сказали что регексы куда как быстрее, а попользовав эту вещь, я к ним и сам привык, то теперь юзаю их везде где надо, но не в этом соль.

    есть вот такая строка
    "абсолютно пфиг что тут хоть убицаапстену &4100.514$"

    Получить надо "100.514$"

    Если залезть в онлайн дебаггер, то вот такое: "([&§][0-9a-fklmnor])?(\d+\.?\d+\$)$" справляется на ура.

    а тепрь внимание.
    Пихаем это в код.
    и вуаля:
    upload_2017-2-4_19-20-54.png

    (я знаю что не по ведру, но на жаба форумах как будто вымерли все)
     
  2. Хостинг MineCraft
    <
  3. Exception_Prototype

    Exception_Prototype Активный участник Пользователь

    Trophy Points:
    46
    Я тут им учился.
     
  4. Автор темы
    Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    ну тут ничего сверхъестественного.
    а вот то, что в онлайн дебаггере он находит по выражению кусок строки, а в коде не находит - это странно
     
  5. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Trophy Points:
    46
    Регексы в Java используют НКА, поэтому обычно скоростью работы не отличаются, более того, иногда работают гораздо медленнее.
     
  6. Автор темы
    Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    в данной ситуации прогонять это через массив чаров не айс. выражение сложноватое.[DOUBLEPOST=1486221385,1486221050][/DOUBLEPOST]как оказалось, он не хотел нормально работать из-за того что перед символами что то было
    исправил, получил в дебаггере это
    upload_2017-2-4_20-17-17.png
    И получается, что третья группа самое то.

    Захожу в IDE, запускаю это
    Code:
    String data = "dsaddasa &63521.0$";
    Pattern pt= Pattern.compile("(.+)?([&§][0-9a-fklmnor])?(\\d+\\.?\\d+\\$)$");
    Matcher ma =pt.matcher(data);
    ma.matches();
           
    for (int i= 0;i<=ma.groupCount();i++){
        System.out.println(ma.group(i));
    }
    Получаю это:
    upload_2017-2-4_20-19-1.png


    Куда взрываться?
     
  7. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Я же давал решение для такой задачи.
    String s = "абсолютно пфиг что тут хоть убицаапстену &4100.514$";
    s.replaceAll("(?i)&[0-9A-FK-OR]", "").replaceAll("[^0-9$.]", "");
     
    Last edited: Feb 4, 2017
  8. Автор темы
    Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    точку учесть забыл c:
    Спасибо, конечно, жаль что мне нужен не реплейс. мне нужно было по группам разбить.
     
  9. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    Да неважно как юзать. Суть не меняется.
     
  10. Автор темы
    Blc_Dragon

    Blc_Dragon Активный участник Пользователь

    Trophy Points:
    76
    Имя в Minecraft:
    Blc_Dragon
    и как же ты предлагаешь тем что выше в !одну! операцию, добиться того что надо - т.е. разбить по кускам.
    лично я такого не вижу
     
  11. alexandrage

    alexandrage Администратор

    Trophy Points:
    173
    Skype:
    alexandr0116
    В одну хз, в две точно можно.
     

Share This Page