LINUX.ORG.RU

Регесп


0

0

Из строки надо удалить все символы , кроме :
1. Любая русская буква
2. Любая латинская буква
3. Цифра
4. Пробел
5. Запятая

★★★★★

Re: Регесп

echo $string | sed s/

[[А-Я][а-я][:alnum:]\ ,]

совершенно не уверен (не хочется проверять +) )

anonymous ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

ой, без `echo $string`, это я начал писать пример для седа, потом передумал.

[[А-Я][а-я][:alnum:]\ ,]

anonymous ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

> [А-Я][а-я]

Допустим, у поцыэнта кодировка KOI8-R. Дальше сам догадаешься?

anonymous ()

Re: Регесп

> Регесп

Для какой библиотеки регэкспов?

anonymous ()

Re: Регесп

для sed`а, как-то так:

1) 's/[^А-Яа-я]//g'

2) 's/[^A-Za-z]//g'

3) 's/[^0-9]//g'

4) 's/[^ ]//g'

5) 's/[^\,]//g'

:)

Cy6erBr4in ★★★ ()

Re: Регесп

| perl -pe 's/[^\w\d ,]//g'

sdio ★★★★★ ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

Ах, ну да, для соответствия английским фонетическим аналогам :)

anonymous ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

Что-то мне подсказывает, что регекспы обрабатываются независимо от кодировки... хотя могу ошибаться

Cy6erBr4in ★★★ ()
Ответ на: Re: Регесп от Cy6erBr4in

Re: Регесп

> Что-то мне подсказывает, что регекспы обрабатываются независимо от кодировки...

Естественно независимо. Именно поэтому и получится фигня. Конструкция [А-Я] означает вовсе не "все русские заглавные буквы, а последовательность от символа с числовым кодом как у 'А' до символа с числовым кодом как у 'Я' с шагом 1. Что туда попадет - регэкспу пофиг.

anonymous ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

только что попробывал с локалью ru_RU.KOI8-R:

echo "123ё123" | grep "[а-я]*"

"ё" в этой строке находит, хотя код этого символа (0xA3) не попадает в числовой диапазон кодов 0xC1 - 0xD1 (а - я).

либо grep слишком умный, либо вы ошибаетесь =)

ale ★★ ()
Ответ на: Re: Регесп от ale

Re: Регесп

> echo "123ё123" | grep "[а-я]*"


$ echo "123ё123" | grep "[а-я]*"
123ё123
$ echo "123123" | grep "[а-я]*"
123123
$ echo "123123" | grep "[r-t]*"
123123
$ 

anonymous ()
Ответ на: Re: Регесп от sdio

Re: Регесп

\w - это конечно мощный спец-символ , только он кроме букв , еще и символы подчеркивания оставляет , поэтому не подходит
приблизительно следующий код отрабатывает :

$text = "МАМА_мыла_раму_!!,!!_Father_was_drink... 1234567890000  $% ";
$text =~ s/[^\A-Za-zА-Яа-я0-9 ,]//g;

но результат получается немного странный :

МАМАмылараму,Fatherwasdrink 1234567890000 0

в конце лишний нолик ...

kto_tama ★★★★★ ()
Ответ на: Re: Регесп от kto_tama

Re: Регесп

$% -- переменная в перле

sdio ★★★★★ ()
Ответ на: Re: Регесп от kto_tama

Re: Регесп

echo 'МАМА_мыла_раму_!!,!!_Father_was_drink... 1234567890000  $% ' | perl -pe 's/[^\w\d ,]|_//g

sdio ★★★★★ ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

> $ echo "123ё123" | grep "[а-я]*" 123ё123 $ echo "123123" | grep "[а-я]*" 123123 $ echo "123123" | grep "[r-t]*" 123123 $

RTFM! $ echo "123ё123" | grep "[а-я]+" [1] $

anonymous ()
Ответ на: Re: Регесп от anonymous

Re: Регесп

Парсер - лох! Никак не привыкну.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.