Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Регулярное выражение

Ответить
Настройки темы
Регулярное выражение

Аватара для benya

Старожил


Сообщения: 302
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


Господа, как написать регулярное выражение которое вырезает первых 2 символа или один в зависимости от длины строки. Нужно проверить только 2 условия на 6 и 5 цифр.
Например, имеем число: 25000
Если число имеет 6 цифр, оставляем только первых 2, тоесть 25
Если же число имеет 5 цифр, оставляем только одно. Тоесть 2
Можно ли задать такое регулярным выражением??
Не хотелось бы писать всякие if-then-else....

Отправлено: 14:13, 16-08-2005

 

Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


я знаю, но тут мне эта инфа нужна не для конкретной цели, а так, для общего развития Если знаете, подскажите плиз

Отправлено: 20:36, 22-08-2005 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


В том-то и дело, что не ведаю . Проблема в работе класса - посимвольно он работает, не со словами.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 10:59, 23-08-2005 | #22


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


если б в [^abcd] можно было б указать, что это не беспорядочная последовательность символов, а конкретная, проблем бы не было.
или в простом /abcd/ поставить отрицание, но как?

Отправлено: 12:06, 23-08-2005 | #23


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


ладно, легче ориентироваться на конкретных примерах: пусть надо удалить из текста все теги. Регулярное выражение будет такое:
/<[^>]*>/gi;
А вот как справиться с такой задачей, если надо удалить все теги, кроме ссылок? т.е. кроме тегов <a href> и </a>?
Можно исключить букву 'a' в квадратных скобках: /<[^a>]*>/gi; но тогда не будут удаляться все теги, где встретится буква 'a', например <font color=blAck> не удалится, а надо, чтоб удалился.
Может создать выражение, которое не будет трогать только теги, начинающиеся с '<a ' и '</a ', а остальные все удалять? Но как такое сделать, я не знаю. Не хватает в голове чего-то. Не поможете мне справиться с такой задачей? Спасибо!

Отправлено: 00:55, 24-08-2005 | #24


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


Как вариант - предварительно выбирать все теги. А потом уже отдельным регэкспом проверять дозволенный это тег или нет. Если пишется на перле, то надо обратить внимание на модификтор 'e' для регэкспов.

Выглядеть это будет примернол так:
Код: Выделить весь код
$text = q~
<p align="left"><a href="link">Link?</a></p>
~;

$text =~ s/(<.*?>)/change_tag($1)/eg;
print $text;

sub change_tag
{
    $tag = $_ = shift;
    # открывающий a - можно
    return $tag if (/<\s*(a|a\s+.*?)>/i);
    # закрывающий a - можно
    return $tag if (/<\s*\/\s*a\s*>/i);
    # всё остальное - нельзя
    return "";
}
Этот код подразумевает, что внутри тега не встречается символа >, как и должно быть в правильном (x)html. Но на практике часто это требование не удовлетворяется (например <a href="javascript:if(a<b)call_comething_strange();">). В принципе регэкспы можно модифицировать и под подобные случаи, но тогда они будут уж слишком монстрообразны; мне лень.

Самый правильный метод, применим в случае если имеется валидный xhtml, тогда можно произвести довольно банально xslt преобразование. Вот.

-------
http://ivank.ru


Отправлено: 18:08, 25-08-2005 | #25


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


ой, блин, а это на перле? А как бы его переделать в javascript? Если это работает, то подойдет для большинства случаев, а <a href="javascript:if(a<b)call_comething_strange();"> не думаю, что такое будет часто встречаться
Спасибо!

Отправлено: 11:53, 26-08-2005 | #26


редкий гость


Сообщения: 1696
Благодарности: 44

Профиль | Сайт | Отправить PM | Цитировать


гм... на jsavascript так не получится, его регэкспы понимают только модификаторы g, m и i...

-------
http://ivank.ru


Отправлено: 14:02, 26-08-2005 | #27


Новый участник


Сообщения: 49
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


да, жалько, очень жалко

Отправлено: 14:34, 26-08-2005 | #28



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Регулярное выражение

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Регулярное выражение: вырезать данные между тегами venuko Вебмастеру 6 04-06-2009 16:59
Регулярное выражение - вырезать все кроме указанных в масиве слов venuko Вебмастеру 14 30-01-2009 09:51
Регулярное выражение для проверки денежной суммы BuilderMan Вебмастеру 9 23-08-2006 11:24
регулярное выражение на пхп. Drem Вебмастеру 13 22-07-2006 00:16
как быстрее и менее ресурсоемкей создать регулярное выражение E-mail Вебмастеру 3 13-02-2005 11:24




 
Переход