The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Проблема с регулярными выражениями в bash-скрипте"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Проблема с регулярными выражениями в bash-скрипте"  –1 +/
Сообщение от drew53 (ok) on 13-Ноя-16, 20:26 
Здравствуйте, гуру!
Прошу сильно не пинать, так как, можно сказать, только начал изучать bash-scripting, а регулярные выражения для меня -- так это просто творение сотоны и язык не этой планеты...)))))

Пытаюсь решить простую (как мне казалось) задачку: есть переменная, содержащая строчные буквы, завершаемые цифрами на конце. Все без пробелов, например, blabla123. Нужно получить порядковый номер blabl'ы, то есть цифровой хвост.

Бьюсь полдня, ничего не понимаю((( Вобщем, объясните, пожалуйста, кто-нибудь: следующий код дает вот какие результаты.


stringZ=abcABC123ABCabc
echo `expr match "$stringZ" '\(.[b-c]*[A-Z]..[0-9]\)'`

stringZ=blabla12
echo `expr match "$stringZ" '\([a-z]\)'`
echo `expr match "$stringZ" '\([a-z]\+\)'`
echo `expr match "$stringZ" '\([0-9]\)'`
echo `expr match "$stringZ" '\([0-9]\+\)'`

Результат работы скрипта:
abcABC1
b
blabla
<пустая строка>
<пустая строка>

То есть, шаблон [0-9] в первом примере (честно слизанном с Вашего портала =) находит цифры в строке. Шаблон [a-z] в моем случае также работает верно, и даже [a-z]+. А вот ни[0-9], ни [0-9]+ в моем случае цифирь не видит "наглухо"(((((

Я понимаю, конечно, что ошибка в ДНК))), но в какое место скрипта она реплицировалась??? Всю голову сломал((( Выручайте?!
Заранее благодарю!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

1. "Проблема с регулярными выражениями в bash-скрипте"  +/
Сообщение от drew53 (ok) on 13-Ноя-16, 21:34 
Похоже, дошло...
Результатом применения шаблона становится строка, состоящая из одних только цифр, а bash, в свою очередь, ввиду своей нестрожайшей типизации, считает эдакое числом, а не строкой. Соответственно, нет строки -- строка пустая...
Могу ошибаться, но очень похоже.

Тогда, "паравозом" другой вопрос: как в описанном случае получить в переменную цифровой хвост такой вот строки?
Заранее благодарю за помощь!

Всё... Нашел: https://www.opennet.ru/openforum/vsluhforumID9/8372.html
Простите... лох...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Проблема с регулярными выражениями в bash-скрипте"  +/
Сообщение от Pahanivo (ok) on 13-Ноя-16, 22:00 
> Похоже, дошло...
> Результатом применения шаблона становится строка, состоящая из одних только цифр, а bash,
> в свою очередь, ввиду своей нестрожайшей типизации, считает эдакое числом, а
> не строкой. Соответственно, нет строки -- строка пустая...
> Могу ошибаться, но очень похоже.

вместо построения догадок лучше почитать ман по данным конкретным регексам, и вообще что такое регексы
тут думаю в самом регексе неявно подразумевается маркеры начала и конца строки

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Проблема с регулярными выражениями в bash-скрипте"  +/
Сообщение от Pahanivo (ok) on 13-Ноя-16, 22:01 
хех
STRING : REGEX
     Perform pattern matching.  The arguments are coerced to strings
     and the second is considered to be a (basic, a la GNU `grep')
     regular expression, with a `^' implicitly prepended.  The first
     argument is then matched against this regular expression.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру