
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.217.2] |
![]() |
|
![]() |
Сообщ.
#1
,
|
|
Есть некий набор букв/слов/фраз, например А и Б.
Как в тексте найти всё кроме етих букв/слов/фраз? Например, в фразе "АБЦДАЕФ" наити "ЦД" и "ЕФ? Спасибо ЗЫ: В НЕТ Обшие Вопросы отобразите тему плиз |
![]() |
Сообщ.
#2
,
|
|
Я слабо представляю для чего это (приведенный пример вообще никак на в этом плане не помог). посему как то сложновато придумать регулярку.
может проще заюзать группы. что бы все нужные подстроки помещались в группы. |
Сообщ.
#3
,
|
|
|
Не понял в чем собственно проблема?
/[^АБ]+/ разве не то, что нужно делает? |
![]() |
Сообщ.
#4
,
|
|
ну это только буквы. фразы под это не покатят.
|
Сообщ.
#5
,
|
|
|
Значит надо ждать объяснения (примера) по-подробнее, потому как непонятно, что собственно нужно.
|
![]() |
Сообщ.
#6
,
|
|
аналогичная ситуация, подскажите - хочу регуляркой найти строки, НЕ содержащие определенные сочетания букв, например строки, не содержащие"arr" или "quote"
|
![]() |
Сообщ.
#7
,
|
|
Одним вызовом?
|
Сообщ.
#8
,
|
|
|
Так в чем проблема????
![]() Пишите регулярку которая будет вырезать ненужные фразы. И вам останеться все самое не обходимое. Разве нет так? ![]() |
![]() |
Сообщ.
#9
,
|
|
Цитата negram @ Одним вызовом? хотелось бы, что-то типа !(arr|quote) , но в правильной нотации. Возможно ? |
![]() |
Сообщ.
#10
,
|
|
Попробуй написать целиком регулярку, которую хочешь составить, а не подзадачу
![]() Скорее всего, тогда станет яснее... |
![]() |
Сообщ.
#11
,
|
|
конкретный пример, ищу строки, заканчивающиеся на опред. символы, но НЕ содержащие "arr". Как добавить исключение к данному выражению?
![]() ![]() (.*""$|.*"",$|.*"",\x20*///$) |
![]() |
Сообщ.
#12
,
|
|
Цитата Old Bat @ а вот это место ещё интереснее. Обычно ищут подстроки, либо проверяют совпадает ли регулярка со строкой...ищу строки Если подстроки, то, в твоём случае, они должны не только оканчиваться на некоторые символы, но и начинаться чем-то... |
![]() |
Сообщ.
#13
,
|
|
"ищу" - ну неточно выразился, просто проверяю
Цитата negram @ проверяют совпадает ли регулярка со строкой именно, читаю файл построчно, приведенное мной выражение успешно проверяет, заканчивается ли она на опред. символы в данном случае не суть как она начинается - строки, совпадающие с регуляркой, могут содержать "arr" где угодно вот подобные строки я бы и хотел исключать сразу при проверке в регулярке, а так приходится проверять доп. условия |
![]() |
Сообщ.
#14
,
|
|
Т.е. считываешь строчку, сравниваешь с регуляркой, и так для всех строк файла?
как на счёт такого выражения: ![]() ![]() (arr)|(""$|"",$|"",\x20*///$) в этом случае, машина регулярок найдёт сначала arr, захватит его с номером 1 и остановится. Если arr не присутстует, захватит второй элемент, а первых будет пустым (неинициализированым - зависит от реализации). Соответственно, запрос к машине регулярок будет один, доп. проверка всё-ровно будет, но второй проход по строке уже осуществляться не будет. Хотя, регулярка такая будет тормознутее, чем изначальный вариант... |
![]() |
Сообщ.
#15
,
|
|
только что написал регулярку но она не даст нормальный результат. ибо правильнее искать позитив нежели негатив.
например строка: '(arr, dk, "")' при герулярки: /(?<!arr).*$/ даст позитив. так как '(ar' полностю подпадет под условие что это не 'arr', а все остальное подпадет под точку. |
![]() |
Сообщ.
#16
,
|
|
Цитата negram @ как на счёт такого выражения: .... Соответственно, запрос к машине регулярок будет один, доп. проверка всё-ровно будет, но второй проход по строке уже осуществляться не будет. Хотя, регулярка такая будет тормознутее, чем изначальный вариант... да, но таком виде + с доп. проверкой теряется весь смысл в подобной регулярке тогда в плане производительности лучше оставить в виде (""$|"",$|"",\x20*///$) итого, получается, что мы не можем выполнить проверку по аналогии с [^куча_исключаемых_символов] , но для опред. последовательности символов ?? |
![]() |
Сообщ.
#17
,
|
|
Цитата Old Bat @ можно но оно не даст желаемого результата. такое прокатывает в более строгом решении. например при поиске имен и фамилий. когда ты ищешь "Васю" но не "Пупкина" и например не "Петечкина"итого, получается, что мы не можем выполнить проверку по аналогии с [^куча_исключаемых_символов] , но для опред. последовательности символов ?? ![]() ![]() /(вася\s*(?!пупкин|петечкин))/i при твоей постановке задач будет выгребано все регуляркой. так как под отрицательные слова она выберет любой попавшийся кусок. так как он полностью совпадет с правилами. |
![]() |
Сообщ.
#18
,
|
|
Цитата Old Bat @ именно. с точки зрения Ларри, эта задача некорректна итого, получается, что мы не можем выполнить проверку по аналогии с [^куча_исключаемых_символов] , но для опред. последовательности символов ?? ![]() Цитата Old Bat @ Не совсем согласен. А если проверять всегда вторую захваченную маску? да, но таком виде + с доп. проверкой теряется весь смысл в подобной регулярке ![]() |
![]() |
Сообщ.
#19
,
|
|
Цитата negram @ А если проверять всегда вторую захваченную маску? посмотрю, просто там еще хуча условий; но в целом на поставленный вопрос ответ получен, спасибо ![]() |