Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Регулярные выражения

Автор: leftMIND
Дата сообщения: 15.10.2002 22:55
Может кто подскажет? Имеется такая строка:
"подстрока1 / подстрока 2 / ... / подстрока N"
Нужно выделить первую и последнюю подстроку...
можно конечно через split но не охота, наверняка с RegExp можно из-нуться, а ?
Автор: woffer
Дата сообщения: 16.10.2002 03:08
$_ = "s1/s2 / s3/sN";

if( /^(s1)+(\s*\/.*\/\s*)+(sN)$/g )
{
$str1 = "$1" ;
$strN = "$3" ;
}

print "$_ $str1 $strN";

p.s. Только зачем такая возня ? split же именно для этого удобнее
Автор: leftMIND
Дата сообщения: 16.10.2002 21:36
Проблема в том, что я не знаю сколько там подстрок будет... может 5 , а может 10, а так получается надо с массивами будет гемороится, а так думал может одной строчкой обойтись =)
Автор: woffer
Дата сообщения: 16.10.2002 22:12
Ясно, предложенное решение работает для любого кол-во подстрок.

Автор: Romero
Дата сообщения: 20.10.2002 16:27
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;
Автор: woffer
Дата сообщения: 20.10.2002 20:07
А по русски нельзя ?

Скрипт выводит $msg в файл, заданный первым аргументом в командной строке( запуск что-то вроде где_перл/perl scrFile.pl fileName ) Если аргумент отсутствует, выводит $msg на стандартый поток вывода (обычно экран).
Автор: L0Ve
Дата сообщения: 27.10.2002 14:34
leftMIND
woffer


Код:
$_ = "s1/s2 / s3/sN";
($first,$last)=(split '/')[0,-1];
Автор: fox12
Дата сообщения: 02.10.2006 14:05
Привет всем!

Есть текстовый файл. Нужно извлечь из него все ip-адреса, и записать в отдельный файл. Каким образом можно это сделать под Unix наименьшими телодвижениями?
Конструкции вида
grep [0-9].[0-9].[0-9].[0-9] файл
выводят целиком строку - а нужно только чтобы только сами регулярные выражения "выдергивались".
Автор: alexsob
Дата сообщения: 01.03.2007 06:20
Может кто посоветует русскую доку по регулярным выражениям (интересует стандарт POSIX), но с БОЛЬШИМ количеством примеров?
Автор: dyr farot
Дата сообщения: 01.03.2007 17:33
http://www.regexpstudio.com/RU/TRegExpr/Help/About.html
Автор: alexsob
Дата сообщения: 02.03.2007 06:13
dyr farot
Спасибо.
Автор: drunk2
Дата сообщения: 24.04.2008 12:47
Помогите с выражением. Есть номера типа "АК 9786 22", "Н 586 MB 55", которые могут быть без пробелов. Надо выделить строку до кода региона те "АК 9786", "Н 586 MB".

ЗЫ Быстро прочитав про регэкспы и написав '^[а-яА-Я]{1,2}[0-9]{3,4}[а-яА-Я]{1,2}' ничего не получил.
Автор: koderr
Дата сообщения: 24.04.2008 17:25
drunk2

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

, а могут быть и с пробелами
Что-то вроде этого:
/^[а-я]{1,2}\s*[\d]{3,4}\s*[а-я]{1,2}/i
Автор: V0lt
Дата сообщения: 24.04.2008 19:41
есть строка
надо в ней заменить все вхождения "abc" "def" "hij" на "123" "456" "789" соответственно

реально ли это сделать одной командой или придется делать три?
Автор: drunk2
Дата сообщения: 29.04.2008 09:09
Есть строки типа "ПЕТРОВ" те все заглавными буквами. Можно с помощью регэкспов сделать "Петров"?
Автор: NightSpamer
Дата сообщения: 29.04.2008 21:34
fox12
Код: grep -o "[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}" inputFile > outputFile
Автор: Dee_Ecks
Дата сообщения: 15.12.2008 01:56
Такая вот задачка попалась:
Есть строка, положим такая "#b текст b#". (1)
Она должна быть заменена на "<b>текст</b>", это элементарно.
Проблема в том, как бы так сделать чтобы когда перед "#b" стоит еще одна решетка выражение вообще не обрабатывалось? т.е. регулярное выражение не должно реагировать на строку "##b текст b#". (2)

([^#]*)#b (.+) b#
Такое выражение не пропускает строку (2).


([^#])#b (.+) b#
Не воспринимает строку (1).
Автор: NightSpamer
Дата сообщения: 15.12.2008 18:47
Dee_Ecks
Интересная задачка была...
s/(\A|[^#])#b(.*?)b#/$1<b>$2<\/b>/g
Автор: crotoff
Дата сообщения: 18.12.2008 09:30
Имеется текст, содержащий ссылки.
пример

[no] "Для выбора ролика кликните

У нас есть порно видео на любую тему:"

Требуется програмно заменить произвольный текст между"" на свой, заданный, чтоб на выходе получить

"Для выбора ролика кликните
[url=http://my_site.com]

У нас есть порно видео на любую тему:" [/no]

Помогите составить регулярное выражение если это возможно
Автор: NightSpamer
Дата сообщения: 18.12.2008 09:57
crotoff, это же самые азы... и примеров в интернетах куча.
s/\[url=http:\/\/(.*?)\]/[url=http:\/\/my_link]/gi;
Автор: crotoff
Дата сообщения: 18.12.2008 11:46
NightSpamer
попробовал заменить в "notepad++" но ничего не вышло (can`t find the text), подскажи что вставлять в форму (искомый текст и замещаемый)
Автор: NightSpamer
Дата сообщения: 19.12.2008 13:29
Искать \[url=http:\/\/(.*?)\]
Заменить на [url=http:\/\/my_link]
Что есть "notepad++" не знаю, возможно у него свой взгляд на регулярки. Проверял на perl-5.8.8-41.
Автор: crotoff
Дата сообщения: 19.12.2008 14:55
NightSpamer
видимо да, там синтаксис отличный от Пёрл
Автор: X11
Дата сообщения: 30.09.2009 11:15
Господа, не соизволите ли глянуть мою проблему с DIRegEx
http://forum.ru-board.com/topic.cgi?forum=33&topic=10654#4
Автор: vovansystems
Дата сообщения: 27.02.2012 14:55
Есть задача в шаблоне версии страницы для печати в скобках около слова-якоря выводить адрес, куда ведёт ссылка, чтобы на бумаге было видно

Долго и упорно вспоминал регэкспы, но никак не могу решить одну проблему - preg_replace заменяет только последнее вхождение.


Код: $text = preg_replace('/<a[^<>]*href="([^"]*)"[^<>]*>(.*)<\/a>/U','$0 ($1)',$text);
Автор: XPerformer
Дата сообщения: 02.05.2012 00:28
Подскажите пожалуйста как выкинуть из результата пробелы
Рассмотрим кусочек рег. выражения
(?<ViewCount>\d{0,3}\s?\d{0,3})
Во ViewCount попадают числа от 0 до 999, и числа вида 111 999, где тысячи отделены пробелами.
Можно как то сделать, чтобы во ViewCount оказалось число без пробелов вида 111999?
Автор: gidrosoldat
Дата сообщения: 16.02.2013 14:06
Добрый день, помогите с регулярным выражением!

Есть документ такого типа:

Цитата:
1. Текст первого параграфа.
Продолжение текста первого параграфа.
1.1. Текст первого подпараграфа.
1.2. Текст второго подпараграфа.
Продолжение текста второго подпараграха.
2. Текст второго параграфа.
......
N. Текст N-ого параграфа


Мне разбить этот текст на отдельные параграфы - получить отдель первый обязательный номер и второй не обязательный и конечно же текст параграфа.
Если бы параграф был в одну строку я бы делал как то так:
(\d+)\.(?:(\d+)\.)?\s(.+)
И получил бы три группы с интересующими меня данными. Но тут как видите может быть еще перенос строки. И тогда мой шаблон не захватывает продолжение (например продолжение первого параграфа). Помогите с составлением регулярного выражения.
Автор: pka
Дата сообщения: 16.02.2013 22:42

Цитата:
Мне разбить этот текст на отдельные параграфы


Если не требуется разбить именно и только регулярным выражением то попробуйте так
Код: #!perl

use strict;

my ($i,@arr,$txt);
open(IN,"in.txt");
$txt = '';
while ($i = <IN>) {
    if ($i =~ /^\d+\./) { # если строка начинается на номер, то начало нового параграфа
        push(@arr,$txt); # добавляем $txt в массив
        $txt = $i; # начинаем новый параграф
        } else { # если строка не начинается с номера, то дабавляем в предыдущий параграф
            $txt .= $i;
            }
    }
close(IN);
push(@arr,$txt); # добавляем последний параграф в массив

foreach my $i (@arr) {
    my ($nomer,$paragraf) = ($i =~ m/^((?:\d+\.)+)\s*(.*)/s);
    print "$nomer\n$paragraf\n";
    }
Автор: serg525
Дата сообщения: 17.02.2013 16:26
Подскажите, пожалуйста, какое регулярное выражение использовать, чтобы удалить все javascript из файла.

Т.е. удалить все теги с содержимым:

<script src="1_files/ga.js" async="" type="text/javascript" async="">Какой-то код</script>
<script ...>.....</script>


Разобрался, как удалить эти теги регулярным выражением, если они расположены на одной строке (любым из 4 вариантов):

Найти:
<script[^>]*>.*</script>
или
<script(.*?)>.*?</script>
или
<script.*?<\/script>
или
<script( [^>]+)?>(.*)</script>


Заменить на:
пусто

Но как удалять их, если они на нескольких строках? Да еще в Windows Linux файлах?
----------------------------

И дополнительно, есть ли возможность удалить все выражения:
onclick=...
onLoad="..."
(только выражения с атрибутами) из кода?




Спасибо.
Автор: xorvrn
Дата сообщения: 17.02.2013 23:31
serg525
для .NET


Страницы: 12

Предыдущая тема: Пожалуйста перепишите этот текст из ObjectPaskal (Paskal) в


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.