Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: RegExp для поиска RegExp, Составить регулярное выражение
 
 автор: iogurt   (07.11.2011 в 21:00)   письмо автору
 
 

Здравствуйте.
Есть необходимость проверять регулярное выражение на наличие служебных символов , чтобы подсвечивать. В программе есть возможность пользователю составлять регулярки , так вот , вводимую регулярку хочу обрабатывать и подсвечивать синтаксис для наглядности. Сам в регулярках пока не очень силен. Буду рад всевозможным примерам.

  Ответить  
 
 автор: cheops   (07.11.2011 в 21:11)   письмо автору
 
   для: iogurt   (07.11.2011 в 21:00)
 

Ммм... вам нужен список служебных символов? Вот он
. \ + * ? [ ^ ] $ ( ) { } = ! < > | :

  Ответить  
 
 автор: iogurt   (07.11.2011 в 22:43)   письмо автору
 
   для: cheops   (07.11.2011 в 21:11)
 

Я знаю служебные слова. Задача состоит в том , чтобы находить их в тексте , с помощью регулярного выражения. К примеру есть у нас ^[a-zа-я0-9_]{5,20}$ , надо найти ^[]{}$. В моем случае просто будут подсвечиваться найденные , но это уже другая заморока, главное найти для меня.

  Ответить  
 
 автор: cheops   (07.11.2011 в 22:50)   письмо автору
 
   для: iogurt   (07.11.2011 в 22:43)
 

А зачем вам регулярные выражения, если у вас есть список символов - подсвечивайте каждый найденный символ при помощи обычной строковой замены... Если все же нужно регулярное выражение, то оно может выглядеть следующим образом
<?php
  $str 
"#[".preg_quote(".+*?[^]$(){}=!<>|:\\")."]+#";
?>

  Ответить  
 
 автор: iogurt   (08.11.2011 в 00:28)   письмо автору
 
   для: cheops   (07.11.2011 в 22:50)
 

Это конечно хорошо. Так и сделал , работает почти так как мне нужно, но вот если пользователь экранирует один служебный символ , уже как то по другому надо обработать. а что то в виде \\\+ , чтобы получить \+ не работает.

  Ответить  
 
 автор: cheops   (08.11.2011 в 00:36)   письмо автору
 
   для: iogurt   (08.11.2011 в 00:28)
 

Хм, поправьте меня, если ход моих мыслей не соответствует вашей ситуации... если у вас нет лишнего экранирования, таких проблем не должно возникать... обычно это проблемы языков, где необходимо регулярные выражения вводить в кавычках, поэтому начинается свистопляска с экранированием внутри кавычек и с экранированием регулярных выражений... у вас пользователь как вводит регулярное выражение? Через текстовое окно? Если да, то пусть вводит его без учета дополнительного экранирования - тогда проблема решиться сама собой (её, кстати, так и решают в цивилизованных языках вроде Perl, JavaScript, ActionScript). Или избавиться от кавычек никак не удастся?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования