Перейти из форума на сайт.Реклама на Ru.Board


Система IP-видеонаблюдения "Линия". Скачать бесплатную демо-версию для 16 камер. НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10

Открыть новую тему     Написать ответ в эту тему

leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто подскажет? Имеется такая строка:
"подстрока1 / подстрока 2 / ... / подстрока N"
Нужно выделить первую и последнюю подстроку...
можно конечно через split но не охота, наверняка с RegExp можно из-нуться, а ?

Всего записей: 32 | Зарегистр. 07-04-2002 | Отправлено: 23:55 15-10-2002
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$_ = "s1/s2 / s3/sN";
 
if( /^(s1)+(\s*\/.*\/\s*)+(sN)$/g )
{
$str1 = "$1" ;
$strN = "$3" ;
}
 
print "$_ $str1 $strN";
 
p.s. Только зачем такая возня ? split же именно для этого удобнее  

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 04:08 16-10-2002 | Исправлено: woffer, 04:09 16-10-2002
leftMIND

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Проблема в том, что я не знаю сколько там подстрок будет... может 5 , а может 10, а так получается надо с массивами будет гемороится, а так думал может одной строчкой обойтись =)

Всего записей: 32 | Зарегистр. 07-04-2002 | Отправлено: 22:36 16-10-2002
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ясно, предложенное решение работает для любого кол-во подстрок.
 

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 23:12 16-10-2002
Romero



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
woffer, can you explayin wtf is this, just got by mail from friend:
 
#!/usr/local/bin/perl
$msg="Hello, world.\n";
if ($#ARGV >= 0) {
while(defined($arg=shift(@ARGV))) {
$outfilename = $arg;
open(FILE, ">" . $outfilename) || die "Can't write $arg: $!\n";
print (FILE $msg);
close(FILE) || die "Can't close $arg: $!\n";
}
} else {
print ($msg);
}
1;

Всего записей: 58 | Зарегистр. 20-10-2002 | Отправлено: 17:27 20-10-2002
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А по русски нельзя ?
 
Скрипт выводит $msg в файл, заданный первым аргументом в командной строке( запуск что-то вроде где_перл/perl scrFile.pl fileName ) Если аргумент отсутствует, выводит $msg на стандартый поток вывода (обычно экран).

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 21:07 20-10-2002 | Исправлено: woffer, 21:09 20-10-2002
L0Ve



s@nya.moder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
leftMIND
woffer
 

Код:
 
$_ = "s1/s2 / s3/sN";  
($first,$last)=(split '/')[0,-1];
 


----------
In God we trust. Everyone else we are verifying with PGP.

Всего записей: 1365 | Зарегистр. 28-07-2001 | Отправлено: 15:34 27-10-2002
fox12

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем!
 
Есть текстовый файл. Нужно извлечь из него все ip-адреса, и записать в отдельный файл. Каким образом можно это сделать под Unix наименьшими телодвижениями?
Конструкции вида
grep [0-9].[0-9].[0-9].[0-9] файл
выводят целиком строку - а нужно только чтобы только сами регулярные выражения "выдергивались".

Всего записей: 10 | Зарегистр. 15-03-2003 | Отправлено: 15:05 02-10-2006
alexsob

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Может кто посоветует русскую доку по регулярным выражениям (интересует стандарт POSIX), но с БОЛЬШИМ количеством примеров?

Всего записей: 121 | Зарегистр. 28-02-2005 | Отправлено: 07:20 01-03-2007
dyr farot

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://www.regexpstudio.com/RU/TRegExpr/Help/About.html

Всего записей: 696 | Зарегистр. 03-08-2004 | Отправлено: 18:33 01-03-2007
alexsob

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dyr farot
Спасибо.

Всего записей: 121 | Зарегистр. 28-02-2005 | Отправлено: 07:13 02-03-2007
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите с выражением. Есть номера типа "АК 9786 22", "Н 586 MB 55", которые могут быть без пробелов. Надо выделить строку до кода региона те "АК 9786", "Н 586 MB".  
 
ЗЫ Быстро прочитав про регэкспы и написав '^[а-яА-Я]{1,2}[0-9]{3,4}[а-яА-Я]{1,2}' ничего не получил.

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 13:47 24-04-2008
koderr



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
drunk2

Цитата:
могут быть без пробелов

, а могут быть и с пробелами
Что-то вроде этого:
/^[а-я]{1,2}\s*[\d]{3,4}\s*[а-я]{1,2}/i

----------
The truth is out there...

Всего записей: 351 | Зарегистр. 22-06-2005 | Отправлено: 18:25 24-04-2008
V0lt



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
есть строка
надо в ней заменить все вхождения "abc" "def" "hij" на "123" "456" "789" соответственно
 
реально ли это сделать одной командой или придется делать три?

Всего записей: 6525 | Зарегистр. 05-02-2003 | Отправлено: 20:41 24-04-2008
drunk2



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть строки типа "ПЕТРОВ" те все заглавными буквами. Можно с помощью регэкспов сделать "Петров"?

Всего записей: 204 | Зарегистр. 27-10-2005 | Отправлено: 10:09 29-04-2008
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
fox12
Код:
grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" inputFile > outputFile

Следует помнить, что под данное выражение подойдёт и строка вида 999.888.777.666, что не является корректным IP адресом.
 
Добавлено:
drunk2, на перле можно и без регэкспов:
Код:
use encoding 'utf8'; # cp1251|koi8-r
$myStr=ucfirst lc $myStr;

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 22:34 29-04-2008 | Исправлено: NightSpamer, 00:44 30-04-2008
Dee_Ecks



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая вот задачка попалась:
Есть строка, положим такая "#b текст b#".  (1)
Она должна быть заменена на "<b>текст</b>", это элементарно.
Проблема в том, как бы так сделать чтобы когда перед "#b" стоит еще одна решетка выражение вообще не обрабатывалось? т.е. регулярное выражение не должно реагировать на строку "##b текст b#".  (2)
 
([^#]*)#b (.+) b#
Такое выражение не пропускает строку (2).
 
 
([^#])#b (.+) b#
Не воспринимает строку (1).

Всего записей: 18 | Зарегистр. 23-07-2007 | Отправлено: 02:56 15-12-2008
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dee_Ecks
Интересная задачка была...
s/(\A|[^#])#b(.*?)b#/$1<b>$2<\/b>/g

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 19:47 15-12-2008
crotoff

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется текст, содержащий ссылки.
пример
 
 "Для выбора ролика кликните  
[url=http://xxx_porno_freesexy.servepics.com][img]http://silicoon.land.ru/xr3/player.gif[/img][/url]  
У нас есть [b]порно видео[/b] на любую тему:"
 
Требуется програмно заменить произвольный текст между"[url=http://" и ближайшей закрывающей скобкой "]" на свой, заданный, чтоб на выходе получить  
 
"Для выбора ролика кликните  
[url=http://my_site.com][img]http://silicoon.land.ru/xr3/player.gif[/img][/url]  
У нас есть [b]порно видео[/b] на любую тему:"  
 
Помогите составить регулярное выражение если это возможно

Всего записей: 934 | Зарегистр. 17-04-2007 | Отправлено: 10:30 18-12-2008 | Исправлено: crotoff, 10:32 18-12-2008
NightSpamer



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
crotoff, это же самые азы... и примеров в интернетах куча.
s/\[url=http:\/\/(.*?)\]/[url=http:\/\/my_link]/gi;

Всего записей: 291 | Зарегистр. 28-11-2006 | Отправлено: 10:57 18-12-2008 | Исправлено: NightSpamer, 10:58 18-12-2008
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Регулярные выражения

Имя:
Пароль:
Сообщение

Для вставки имени, кликните на нем.

Опции сообщенияДобавить свою подпись
Подписаться на получение ответов по e-mail
Добавить тему в личные закладки
Разрешить смайлики?
Запретить коды


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2017

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru