Я предполагаю, что это более или менее вопрос из двух частей, но вот основные сведения: я пишу PHP, чтобы использовать preg_match_all для поиска в переменной для строк, заканчивающейся буквой {}. Затем он повторяется через каждую возвращаемую строку, заменяет найденные строки данными из запроса MySQL.Синтаксис Regex PCRE
Первый вопрос заключается в следующем: какие-либо хорошие сайты, чтобы действительно узнать, что такое выражения PCRE? Я много искал в Google, но лучший из них, который я смог найти, - http://www.regular-expressions.info/. На мой взгляд, информация там не очень хорошо организована, и, поскольку я бы предпочел не повесить трубку, чтобы просить о помощи, когда мне нужно написать сложное регулярное выражение, пожалуйста, укажите мне пару сайтов (или пару книг!) что поможет мне не беспокоить вас в будущем.
Второй вопрос заключается в следующем: У меня есть это регулярное выражение
"/{.*(_){1}(.*(_){1}[a-z]{1}|.*)}/"
и мне нужно, чтобы поймать экземпляры, такие как {first_name}, {last_name}, {email}
и т.д. У меня есть три проблемы с этим регулярным выражением.
Во-первых, он видит «{first_name} {last_name}
» как одну строку, когда он должен видеть это как два. Я смог решить это, проверив существование пространства, а затем взрыва в пространстве. Беспокойный, но он работает.
Вторая проблема заключается в том, что она включает пунктуацию как часть захваченной строки. Итак, если у вас есть «{first_name} {last_name}
», то он возвращает запятую как часть строки. Я смог частично решить эту проблему, просто используя preg_replace для удаления периодов, запятых и полуколоней. Хотя он работает для этих пунктов пунктуации, моя логика неспособна обрабатывать восклицательные знаки, вопросительные знаки и все остальное.
Третья проблема с этим регулярным выражением заключается в том, что он не видит экземпляры {email} вообще.
Теперь, если вы можете, готовы, и у вас есть время, чтобы просто передать мне решение этой проблемы, спасибо, потому что это решит мою непосредственную проблему. Однако, даже если вы можете это сделать, пожалуйста, , пожалуйста, предоставить lmgfty, который предоставляет хорошие веб-сайты в качестве ссылок и/или книги или двух, которые обеспечили бы хорошее образование по этому вопросу. Сайты были бы предпочтительнее, поскольку деньги были жесткими, но если книга является решением, я найду деньги (если моя локальная библиотечная система не сможет забрать указанный объем).
Мне очень понравилось [Освоение регулярных выражений] (http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124). В этой книге больше, чем вы, вероятно, когда-либо будете использовать; очень тщательный. –
@JonahBishop: это хорошая книга, но не совсем легко переварить;) – 0xC0000022L
@ClementSmith: вы говорите, что это должно увидеть это как два, но ваше регулярное выражение жадное. Добавьте несколько «?» В нужные места :) – 0xC0000022L