Jonmey
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору regist123 Цитата: Но к примеру ваш вариант <tr style="display:none">(<td class=drug><a href=[^<>]*><b[^>]*>[^<>]*FLUO) не найдёт строку <tr style="display:none"><td class=drug><a href=doc_1.htm><b>5-ФТОРУРАЦИЛ-ЭБЕВЕ</b> (5-FLUOROURACIL-EBEWE)</a></td><td class=firm colspan=2><i></i> <a href=fir_206.htm>EBEWE PHARMA, GmbH.Nfg.KG (Австрия)</a></td></tr> | В таком случае ваш вариант не найдет ничего если в тегах будет более одного пробела. Пример с юзером аккурат выше. Не говоря о том, что админ сайта может завтра изменить один символ в скриптах формирующих страницу - это случается более чем часто) и юзер будет куковать снова. Изменять же мой регэксп элементарно, для любого неподготовленного юзера использовав универсальное [^<>]* и </b>, как возможный вариант ([^<>]*</b>) <tr style="display:none">(<td class=drug><a href=[^<>]*><b[^>]*>[^<>]*(</b>[^<>]*)?FLUO) где красным отмечено то, что имеет отношение к регэкспам (операторы и др.) синим обозначено то, что является простыми текстовыми строками, как если бы они были вида 123 или ABC, то есть отношения к регэкспам они не имеют. FLUO - это любая текстовая подстрока или регэксп или их комбинация, которые могут охватывать многие и многие варианты; в простейшем случае простое перечисление с использованием оператора ИЛИ: (...|...) (лучше заключать в круглые скобки); напр., (a|b) - символ a или символ b; или напр., (АНТИ|БИО|ПЕННИ) - любая из подстрок АНТИ, БИО или ПЕННИ [^<>]* - любой набор символов не равных символам < или > включая вариант ее полного отсутствия (то есть подстрока может быть найдена, а может ее и не быть вообще) (</b>[^<>]*)? - строка, состоящая из (закрыающего тега (просто строка, не регэксп) </b> [с последующим "любой набор символов не равных символам < или > включая вариант ее полного отсутствия"]) - которая может встречаться 1 раз или 0 раз (отсутствовать)". Примеры строк которые удовлетворяют этому выражению '</b>', '</b>123', '</b>ABC DE', (ничего или отсутствие указанной подстроки). Примеры подстрок НЕ удовлетворяющие данному регэкспу целиком (но удовлетворяющие частично (в этих строках регэксп найдет подстроку) '</b><abc>', '</b>cde</>', '</b>123>56 66'. Примеры строк в которых регэксп найдет только одно соответствие - '' (пустое множество или ничего) - '<i>123</i>', '<b>ABC', '<b x=y>CD EE', '<b/>ABC MLP'. В последнем случае, данный регэксп не будет фактически участвовать в конечном результате поиска, если он является частью более сложного регэкспа, как в примере выше, и результат поиска будет определяться остальными частями общего регэкспа. То есть смысл данного (регэкспа)? - если есть кусок подстроки удовлетворяющий ему (1 совпадение), то корректно его обработать , чтобы он был учтен при работе всего общего регекспа, а если такого куска нет (0 совпадений), то - не вмешиваться в работу. Операторы [...] - набор символов [^...] - набор символов, которых не должно быть () - выражение (любое, как текст, так и регэксп, их комбинации) - требуется, в частности, чтобы найденными подстроками можно было оперировать, как переменными (\1 или $1) - у меня это вся подстрока после подстроки, которую надо изменить - <tr style="display:none">(...) ? - число найденных предыдущих выражений или символов 0 или 1 раз * - число найденных предыдущих выражений или символов 0 или более раз. Это все что нужно знать, чтобы понять предложенный мной регэксп и изменять тем же инструментарием по своему вкусу. И это я еще не говорил про совместимость - мой регэксп будет успешно работать даже в случаях, если редактор имеет лишь базовую (ограниченную) поддержку регэкспов - то есть это охватывает абсолютное большинство инструментов редактирования, которые имеют хоть какую-то поддержку регэкспов (что автоматически поможет даже самым неопытным избежать ошибок/проблем связанных с программой, которую они используют, а не их собственными ошибками). Ваши варианты не могут всем этим похвастаться. То есть, вы пытаетесь притянуть за уши оправдания неоптимальности предложенного вами решения. Если бы юзер руководствовался не политическими соображениями (нравится-ненравится), а здравым смыслом, то через час (от силы, два) времени и чтения хелпа по регэкспам, по предложенному мною пути составлял бы подобные регэкспы самостоятельно, ибо освоить 3-4 базовых оператора регэкспов может без исключения любой - (а только такие и использованы у меня преднамеренно), ничего ни у кого не выклянчивая. Но он предпочитает брать из кошерных, как ему кажется рук, и потому будет клянчить и в будущем, спотыкаясь на каждом новом (внезапном) символе (как в изначальном случае его текущей проблемы). Ну а разумеется вам это приятно. Мне же приятно, когда любой юзер чему-то учится и самообучается, понимая, что ему предлагают, а не занимается тупой копипастой, как попка. | Всего записей: 1364 | Зарегистр. 17-01-2011 | Отправлено: 23:21 29-02-2020 | Исправлено: Jonmey, 01:22 01-03-2020 |
|