LINUX.ORG.RU

Регесп


0

0

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

★★★★★

echo $string | sed s/

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

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

anonymous
()

> Регесп

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

anonymous
()

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

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

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

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

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

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

:)

Cy6erBr4in ★★★
()

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

sdio ★★★★★
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от Cy6erBr4in

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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

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

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

ale ★★
()
Ответ на: комментарий от ale

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


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

anonymous
()
Ответ на: комментарий от sdio

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

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

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

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

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

kto_tama ★★★★★
() автор топика
Ответ на: комментарий от kto_tama

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

sdio ★★★★★
()
Ответ на: комментарий от anonymous

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

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

anonymous
()
Ответ на: комментарий от anonymous

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

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