|
|
|
| Здравствуйте.
Есть необходимость проверять регулярное выражение на наличие служебных символов , чтобы подсвечивать. В программе есть возможность пользователю составлять регулярки , так вот , вводимую регулярку хочу обрабатывать и подсвечивать синтаксис для наглядности. Сам в регулярках пока не очень силен. Буду рад всевозможным примерам. | |
|
|
|
|
|
|
|
для: iogurt
(07.11.2011 в 21:00)
| | Ммм... вам нужен список служебных символов? Вот он
. \ + * ? [ ^ ] $ ( ) { } = ! < > | :
|
| |
|
|
|
|
|
|
|
для: cheops
(07.11.2011 в 21:11)
| | Я знаю служебные слова. Задача состоит в том , чтобы находить их в тексте , с помощью регулярного выражения. К примеру есть у нас ^[a-zа-я0-9_]{5,20}$ , надо найти ^[]{}$. В моем случае просто будут подсвечиваться найденные , но это уже другая заморока, главное найти для меня. | |
|
|
|
|
|
|
|
для: iogurt
(07.11.2011 в 22:43)
| | А зачем вам регулярные выражения, если у вас есть список символов - подсвечивайте каждый найденный символ при помощи обычной строковой замены... Если все же нужно регулярное выражение, то оно может выглядеть следующим образом
<?php
$str = "#[".preg_quote(".+*?[^]$(){}=!<>|:\\")."]+#";
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(07.11.2011 в 22:50)
| | Это конечно хорошо. Так и сделал , работает почти так как мне нужно, но вот если пользователь экранирует один служебный символ , уже как то по другому надо обработать. а что то в виде \\\+ , чтобы получить \+ не работает. | |
|
|
|
|
|
|
|
для: iogurt
(08.11.2011 в 00:28)
| | Хм, поправьте меня, если ход моих мыслей не соответствует вашей ситуации... если у вас нет лишнего экранирования, таких проблем не должно возникать... обычно это проблемы языков, где необходимо регулярные выражения вводить в кавычках, поэтому начинается свистопляска с экранированием внутри кавычек и с экранированием регулярных выражений... у вас пользователь как вводит регулярное выражение? Через текстовое окно? Если да, то пусть вводит его без учета дополнительного экранирования - тогда проблема решиться сама собой (её, кстати, так и решают в цивилизованных языках вроде Perl, JavaScript, ActionScript). Или избавиться от кавычек никак не удастся? | |
|
|
|