Порезать строку на части многосимвольным разделителем с VBScript.RegExp #497129


#0 by greemodineser
Есть большая строка (~1мБ), её хотелось бы порезать на части, считая, что нужные подстроки разделены тремя идущими подряд символами - "')," Конечно, можно воспользоваться специальными функциями, которые есть в конфигурациях, но будем считать, что я знаю толк в извращениях и мне позарез нужно сделать это именно с помощью регулярных выражений. Проще говоря, как на регэкспах закодить условие: "последовательность любых символов, не включающая в себя "')," (именно в таком порядке) и сразу за которой идут эти самые "'),". Если тут пробегают спецы по регулярным выражениям буду рад их помощи.
#1 by Kreont
+ + Мне по таким ссылкам хватило подучить regexp
#2 by Кириллка
на вскидку: .*?'),
#3 by Кириллка
+2 можно здесь потестить:
#4 by greemodineser
А-а-а-а-а!!! Вы, товарищ земляк, мою самооценку под плинтус запихали. Я уже два дня над проблемой парюсь, а вы так небрежно... ) Спасибо, одним словом. Я пытался то же самое, но без "?", безуспешно, разумеется. Какую он тут роль играет, и почему не работает без него, никак не пойму? Как это понимать, "ноль, либо одно повторение (ведь это означает "?") нуля или больше повторений любых символов"? ) Не укладывается в голове соседство ".*" и "?".
#5 by Кириллка
. - любые символы .* - последовательность любыбых символов, которых может и не быть .*?'), - последовательность любыбых символов, которых может и не быть, гд поиск заканчивается на первом найденном "'),", т.е. ленивый квантор. Без ? будет искать до последней последовательности "'),".
#6 by greemodineser
Цитата с msdn.microsoft.com: ?   -    Match zero or one occurrences. Equivalent to {0,1}. "as?b" matches "ab" or "a b". Правильно ли я понимаю, что именно совместное использование *? приводит к "ленивости", а в остальных случаях "?" работает как написано выше?
#7 by Кириллка
Не объяснил? :) Это фича такая. Есть жадные ("*", "+") и ленивый ("*?", "+?") кванторы. Жадные ищут самые длиные последовательности.
#8 by Кириллка
вот ктобы мне помог понять отчего boost кидает исключение на мое RE :(
#9 by greemodineser
Все, теперь объяснил. Просто я читал на msdn.microsoft.com, а там про ленивые кванторы ничего не видел. И сейчас пытался увязать в мозгу свое понимание "*" с пониманием "?", не подозревая, что это один совместный квантор. Еще раз огромное спасибо.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С