![]() |
Регулярное выражение
Господа, как написать регулярное выражение которое вырезает первых 2 символа или один в зависимости от длины строки. Нужно проверить только 2 условия на 6 и 5 цифр.
Например, имеем число: 25000 Если число имеет 6 цифр, оставляем только первых 2, тоесть 25 Если же число имеет 5 цифр, оставляем только одно. Тоесть 2 Можно ли задать такое регулярным выражением?? Не хотелось бы писать всякие if-then-else.... |
а что надо?? Может просто делить на 1000 и всё??
|
Цитата:
PHP код:
|
benya
может быть если напишете, что конкретно надо, будет понятнее? mar чтоб тему новую не создавать, можете написать синтаксис сокращенного ветления( = ? : ). |
Xcode
Код:
условие? вариант, работающий при выполнении условия : вариант, идущий в случае невыполнения; Но в нашем-то случае, имхо все - побочное, а решение, как уже сказал vadimiron - надо просто все делить на энное количество тысяч и отбрасывть дробную часть. |
([0-9][0-9])[0-9][0-9][0-9][0-9]
([0-9])[0-9][0-9][0-9][0-9] такое?:) |
если я правильно поняла отбрасываются последние 4 цифры:
/(\d{1,2})\d{4}$/ |
E-mail,eleo
зачем уводить человека в лес?... vadimiron и mar имхо дали более корректный совет. "strlen + if + деление" работают быстрее, чем функции регулярных выражений. имхо... |
Мне на самом деле нужно было вычислить количество лет от определенной даты.
Правильно подкинул идею vadimiron. Там вообще не нужны никакие регулярные выражения. Я сделал так : $vozrast = "19791012"; день рождения $dr = "20050818"; # текущая дата $vozrast = int(($dr-$vozrast)/10000); Получаем правильное число даже если человеку будет 200 лет ;))) |
Цитата:
|
Мда, только вот пишу я не на php, а на Perl, а там такой функции видимо нет ;))
|
F как мне игнорировать больше одного тега <BR>?
Если нужно, чтобы пустые строки нешли подряд больше одного раза. типа вот так: asd ads |
Можно так:
PHP код:
|
Круто..
Надо мне всё-таки подучить регулярные выражения. |
Цитата:
Здесь тоже не обязательно пользоваться регулярками. Когда точно известен набор букв, которые мы хотим заменить. то лучше пользоваться стринг-функциями ПХП, БЫСТРЕЙ будет. Например:mixed str_replace ( mixed search, mixed replace, mixed subject ) Регулярки нужны, когда мы не знаем, как выглядит строка, например имеется информация только о том, что в строке сначало идут 3 цифры, а потом бесконечное число букв и пробелов, в этом случае без регулярных выражений не обойтись. К модерам: может сделаем прикреплённую тему по регуляркам, у меня будет время в середине августа, я смогу небольшой мануал накатать??? |
Цитата:
И как в моём случае это будет выглядеть? |
vadimiron
Я тоже помню эту цитату по производительности из мануала ;). На вскидку фигура "str_replace" в мозговом тетрисе никуда не вляпалась... И все только из-за всяких возможных гадостей между br'ками |
slaine, Prisoner
Правильно, моя ошибка, так как мы вырезаем только те <br>, которые друг за другом идут. А если между ними есть текст, то не вырезаем-это как раз случай для регулярных выражений :) |
при помощи какого js регулярного выражения в тексте можно найти всё, кроме определенной последовательности символов?
Допустим var regExp=/word/g; найдет только слово "word", а как можно найти все остальное, кроме слова "word"? Например var regExp=/[^word]/g; найдет все символы в тексте, кроме символов 'w' 'o' 'r' 'd', а можно ли каким-либо образом указать, чтобы "word" в квадратных скобках интерпретировалась не как любая последовательность символов 'w' 'o' 'r' 'd', а как строгая последовательность 'word'? Спасибо |
Имхо, тут как раз не стоит применять регулярки. Бить по словам и циклом, циклом! :)
|
я знаю, но тут мне эта инфа нужна не для конкретной цели, а так, для общего развития ;) Если знаете, подскажите плиз
|
В том-то и дело, что не ведаю :(. Проблема в работе класса - посимвольно он работает, не со словами.
|
если б в [^abcd] можно было б указать, что это не беспорядочная последовательность символов, а конкретная, проблем бы не было.
или в простом /abcd/ поставить отрицание, но как? :( |
ладно, легче ориентироваться на конкретных примерах: пусть надо удалить из текста все теги. Регулярное выражение будет такое:
/<[^>]*>/gi; А вот как справиться с такой задачей, если надо удалить все теги, кроме ссылок? т.е. кроме тегов <a href> и </a>? Можно исключить букву 'a' в квадратных скобках: /<[^a>]*>/gi; но тогда не будут удаляться все теги, где встретится буква 'a', например <font color=blAck> не удалится, а надо, чтоб удалился. Может создать выражение, которое не будет трогать только теги, начинающиеся с '<a ' и '</a ', а остальные все удалять? Но как такое сделать, я не знаю. Не хватает в голове чего-то. Не поможете мне справиться с такой задачей? Спасибо! |
Как вариант - предварительно выбирать все теги. А потом уже отдельным регэкспом проверять дозволенный это тег или нет. Если пишется на перле, то надо обратить внимание на модификтор 'e' для регэкспов.
Выглядеть это будет примернол так: Код:
$text = q~ Самый правильный метод, применим в случае если имеется валидный xhtml, тогда можно произвести довольно банально xslt преобразование. Вот. |
ой, блин, а это на перле? А как бы его переделать в javascript? Если это работает, то подойдет для большинства случаев, а <a href="javascript:if(a<b)call_comething_strange();"> не думаю, что такое будет часто встречаться :)
Спасибо! |
гм... на jsavascript так не получится, его регэкспы понимают только модификаторы g, m и i...
|
да, жалько, очень жалко
|
Время: 01:15. |
Время: 01:15.
© OSzone.net 2001-