BAS "давиться" сложным RegExp



  • Доброго времени суток.
    Столкнулся с такой проблемой, на последней актуальной версии.

    /(?<=<span\sclass="im_message_author_wrap">\s+.+<a\sclass="im_message_author\s+.+">).+?(?!<\/a>.+\s+style="display: none;")(?=<\/a>.+\s+.+">admin<\/span>)/g
    

    Вот такой сложный RegExp в BAS невозможно адекватно выполнить. Кубики - отдают пустой результат, Выполнить скрипт - выкидывает ошибку, Яваскрипт в Браузере - тоже не работает с ним.

    Даже в консоли хрома все норм.

    Что это за такая классная регулярка - можно почитать тут



  • @andrwork Потому что это не для js выражение, наверное для php. В js нет таких конструкций ?<=, ?!
    А насчет сложности, у меня в разы сложнее регулярки и ничего не давится.



  • @andrwork проблема не в басе...
    вот это (?<=) и (?=) работает только если в них указаны точные неизменные данные, т.е. элементы (.* или .+) в них не прокатывают.
    Здесь лучше выделять в регулярке несколько групп (в скобках) и брать нужную.



  • @Xstroy Что вы подразумеваете под неизменными данными? Я в спецификации таких конструкции вообще не встречал. Вот пример достаточно неизменный?

      RegExp:  (?<=Андрей )Петров Текст: Андрей Петров 
    

    Он тоже ничего не найдет.



  • @Denis_krsk а так?

    (?<=Андрей ).*
    


  • @Xstroy said in BAS "давиться" сложным RegExp:

    (?<=Андрей ).*

    Хм. А кстати пример выше оказывается тоже отрабатывет. Раньше как-то пробовал не получалось