[REGEXP] Взять строку целиком, если конец строки не символ и не буква

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
Решение:
Спасибо за помощь wizard и evgen_po

(?i)
- реГиСтр букв отключаем для подстраховки
[\w*] - любая буква или символ * - должны встречаться хоть один раз

Включая слово user-agent:
Код:
(?i)user-agent:\s*[\w*]+.*?(?=(\r|\n|$))
Исключая слово user-agent:
Код:
(?i)(?<=user-agent:)\s*[\w*]+.*?(?=(\r|\n|$))
Задача:
Версия ZP: 5.7.1.0
Ребят, столкнулся с такой проблемой, то ли баг зенки, то ли выражение regexp не верное. В общем смотрите.

Исходный код:
Код:
User-Agent: *
Disallow: /admin/
Disallow: *component*
Disallow: /go/*
Disallow: /assets/*
Disallow: /load/
Disallow: /comments/
Disallow: /plugins/
Disallow: /ajax/
User-agent: Yandex
Disallow: /admin/
Disallow: *component*
Disallow: /go/*
Disallow: /assets/*
Disallow: /load/*
Regex:
Код:
[A-a..Z-z]ser-[A-a..Z-z]gent.*
В зенке в переменных показывает:
robots2.PNG

Вроде все отлично, но!!!!!

При сохранении в файл выдает такой результат:
robots3.PNG

Где собака порылась? В регексе или в зенке?
Если в регексе, то помогите найти выражение правильное пожалуйста?
Или хотя бы скажите как в регексе обозначить конец строки?
 
Последнее редактирование:

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 331
Благодарностей
9 482
Баллы
113
Ребят, столкнулся с такой проблемой, то ли баг зенки, то ли выражение regexp не верное. В общем смотрите.

Исходный код:
Код:
User-Agent: *
Disallow: /admin/
Disallow: *component*
Disallow: /go/*
Disallow: /assets/*
Disallow: /load/
Disallow: /comments/
Disallow: /plugins/
Disallow: /ajax/
User-agent: Yandex
Disallow: /admin/
Disallow: *component*
Disallow: /go/*
Disallow: /assets/*
Disallow: /load/*
Regex:
Код:
[A-a..Z-z]ser-[A-a..Z-z]gent.*
В зенке в переменных показывает:
Посмотреть вложение 7421

Вроде все отлично, но!!!!!

При сохранении в файл выдает такой результат:
Посмотреть вложение 7422

Где собака порылась? В регексе или в зенке?
Если в регексе, то помогите найти выражение правильное пожалуйста?
Или хотя бы скажите как в регексе обозначить конец строки?
переменную после регекса тримировать можно - Обработка текста -> Trim
 

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
переменную после регекса тримировать можно - Обработка текста -> Trim
Я сразу беру все элементы в список, по этому трим не могу использовать, а только костыли со вспомогательным списком.
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 331
Благодарностей
9 482
Баллы
113
Я сразу беру все элементы в список, по этому трим не могу использовать, а только костыли со вспомогательным списком.
даже не знаю как такое получается..
а почему такая регулярка: [A-a..Z-z]ser-[A-a..Z-z]gent.* ?
[Uu]ser-[Aa]gent.*

видимо тут как то действительно надо регулярку преобразовать (хотя в конструкторе нормально отрабатывает ведь), либо мириться с тем что получается - переводы строк вроде как не критичны в роботсах..
 
  • Спасибо
Реакции: Manless

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
даже не знаю как такое получается..
а почему такая регулярка: [A-a..Z-z]ser-[A-a..Z-z]gent.* ?
[Uu]ser-[Aa]gent.*

видимо тут как то действительно надо регулярку преобразовать (хотя в конструкторе нормально отрабатывает ведь), либо мириться с тем что получается - переводы строк вроде как не критичны в роботсах..
Да на всяк случай такая регулярка

Я формирую некий отчет в таблицу эксель, а там лишняя строка - это увеличение высоты строки :(
 

wizard

Client
Регистрация
04.10.2011
Сообщения
1 025
Благодарностей
654
Баллы
113
реГиСтр букв отключаем - (?i)

(?i)(?<=User-agent:\ ).*?(?=($|\n))
 
  • Спасибо
Реакции: Manless

Manless

Client
Регистрация
09.01.2014
Сообщения
186
Благодарностей
33
Баллы
28
1) реГиСтр букв отключаем для подстраховки - (?i)
Код:
(?i)User-agent.*?(?=($|\n))
2) Это решение подсказал уважаемый evgen_po
Код:
(?i)user-agent.*(?=\r)
Во втором случае исключено появление пустых строк в списке
 

wizard

Client
Регистрация
04.10.2011
Сообщения
1 025
Благодарностей
654
Баллы
113
Во втором случае исключено появление пустых строк в списке
а также исключает попадание ПОСЛЕДНЕЙ записи, так как в конце НЕ будет \r

тогда уже както так

(?i)user-agent:\s*[\w*]+.*?(?=(\r|\n|$))

[\w*] - любая буква или символ * - должны встречаться хоть один раз
 
  • Спасибо
Реакции: Manless и evgen_po

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)