За последние 24 часа нас посетили 17050 программистов и 1834 робота. Сейчас ищут 1637 программистов ...

регулярное выражение, поиск букв в нижнем регистре

Тема в разделе "Регулярные выражения", создана пользователем ivnphp, 30 авг 2016.

  1. ivnphp

    ivnphp Новичок

    С нами с:
    11 окт 2015
    Сообщения:
    33
    Симпатии:
    0
    есть строка:
    BWAsGnBnWetekUTVuP
    есть регулярное выражение:
    [A-Z][a-z]{1}[A-Z]

    Хочу искать символы в нижнем регистре, но тут идет пропуск символа "n" между AsGnBnW
    т.е. почему то такой символ пролетает мимо, кто может поясните почему?
    спасибо, большое
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    нужно все буквы в нижнем между в верхнем или просто все в нижнем найти?
     
  3. ivnphp

    ivnphp Новичок

    С нами с:
    11 окт 2015
    Сообщения:
    33
    Симпатии:
    0
    первое
     
  4. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    /(?<=[A-Z])[a-z](?=[A-Z])/
     
    Ganzal, ivnphp и runcore нравится это.
  5. ivnphp

    ivnphp Новичок

    С нами с:
    11 окт 2015
    Сообщения:
    33
    Симпатии:
    0
    Спасибо, работает.
    Если не сложно, можешь дать пояснение или ссылку, где почитать.
    Буду благодарен.
     
  6. Emilien

    Emilien Активный пользователь

    С нами с:
    30 июн 2016
    Сообщения:
    246
    Симпатии:
    156
    (?= ) - позитивная опережающая проверка.
    (?<= ) - позитивная ретроспективная проверка.
    Книга Джеффри Фридла «Регулярные выражения» там всё очень подробно изложено.

    Тут важно понимать с какой позиции будет продолжен поиск.
    После нахождения AsG следующая попытка поиска будет с той позиции, где завершился предыдущий поиск т.е. nBnW и первая буква n будет пропущена.
    Опережающая проверка позволяет проверить символ и не включать его в совпавший текст, тогда следующий поиск будет с позиции GnBnW и пропусков не будет.
     
    ivnphp, denis01 и Ganzal нравится это.