помогите пожалуйста составить регулярноевыражение для preg_grep

mikemike

Новичок
помогите пожалуйста составить регулярноевыражение для preg_grep

Приветствую!

Есть массив русских слов - каждый элемент масива, отдельное слово.
подскажите ,как с помощью preg_grep оставить в масиве слова с заглавной буквы, а все слова которые начинаются с прописной буквы, удалить (в том числе если слово начинается с кавычек).
 

mikemike

Новичок
понимаю что мое сообщение похоже на сообщение лентяя, но поверьте, читал я мануал, еще читал это http://ruscoder.ru/2008/06/08/regulyarnye_vyrazheniya_na_php.html

вот что уменя получилось $words=preg_grep('/[А-ЯA-Z]{1}[а-яa-z]+/', $words);
но не всегда работает.
Я понимаю что ответ где-то рядом, направьте на истинный путь...
 

x-yuri

Новичок
во-первых у тебя нету привязки к началу строки
во-вторых, если речь о cp1251, в диапазон А-Я не попадает Ё, так как диапазон определяется кодами символов (http://ru.wikipedia.org/wiki/Cp1251)

-~{}~ 15.01.09 17:15:

в-третьих присутствие/отсутствие {1} ни на что не виляет
в-четвертых, если будет привязка к началу строки, то многое из твоего шаблона не понадобится
 

mikemike

Новичок
спасибо за ответ.
тое нужно так?
$words=preg_grep('/^[А-ЯA-Z][а-яa-z]+$/', $words);
речь идет о UTF-8
 

HraKK

Мудак
Команда форума
А я бы вообще сделал бы без preg, что-то типа такого:
PHP:
<?php

function cut( &$value )
{
    $upper = mb_strtoupper($value[0]);
    if( $value === $upper )
    {
        return;
    }
    
    unset( $value );
}
$array = array( 'Голубцы', 'котлеты', 'Ёжики', 'индуссы с pregom');
array_map( 'cut', $array);
var_dump($array);
 

mikemike

Новичок
HraKK
Спасибо что развернули мое мышление в другую сторону! зациклился я на этих регулярных выражениях. Сейчас попробую внедрить!
 

x-yuri

Новичок
HraKK а что быстрее? не факт, что это заметно ускорит генерацию странички
mikemike '/^[А-ЯA-Z]/u'
 

HraKK

Мудак
Команда форума
Скорее даже не ускорит, я не сказал что это единственно правельный. Это нетипичная задача для строковых, поэтопу grep тут лучше наверно, просто я привык все решать если возможно без регулярок, вот и написал. Но самое главно что скорость тут не играет решающию роль, а вот еслиб ТС подумал бы об алтернативе регулярок то давно бы решил эту проблему и забыл - вот я к чему))
 

mikemike

Новичок
x-yuri
благодарю! Работает!
просьба - объясните мне тупому, что делает /u?

я нашел инфу /u — означает, что следующий символ регулярного выражения преобразуется в верхний регистр.

^ -начало строки, тут все понятно
[А-ЯA-Z] - диапазон символов - тоже понимаю.

но что как вданном примере работает /u? ума не приложу...
 

mikemike

Новичок
врубился...
эта регулярка означает дословно "если в начале строки есть заглавная буква в кодировке UTF-8"

правильно?

Спасибо большое! теперь для меня это не такой темный лес как было до этого топика...
 
Сверху