IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   И снова регулярные выражения (http://www.imho.ws/showthread.php?t=94152)

Hubbitus 26.03.2007 00:34

Цитата:

Сообщение от StasK (Сообщение 1378610)
а теперь: как вырезать это все ???

А это и так все вырезается, точнее это считается разделителем полей, и по нему едлится, оно никуда не попадает.


Цитата:

Сообщение от StasK (Сообщение 1378610)
т.е. что бы текст, который был после этого, стал сразу за текстом который был перед блоком без пустых строк ?
такое возможно?

В примере так и есть :)
Если при этом нужно еще что-то с собой захватить, например пустые строки ДО или ПОСЛЕ, то просто допишите это в регулярное выражение, типа:
Код:

#!/bin/gawk --file

BEGIN {
RS="\n* +===[0-9]===\n  \n  \n+"
}

{ print $0 }

Подчеркиваю, что все и так удалялось, ВМЕСТО разделителей не вставлялось пустых строк, тоесть то что подходило под регулярное выражение в RS и так удалялось.

StasK 26.03.2007 18:15

работает!!!

LAndrew2 22.08.2007 15:00

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

Drakosha 22.08.2007 15:38

хм... таких результатов часто бесконечное количество!

LAndrew2 22.08.2007 17:22

Drakosha,
ну это понятно... меня б устроило, например, пять любых подходящих вариантов

crawler 23.08.2007 17:59

Да навалом таких прог - ищи "regular expression tester "
https://addons.mozilla.org/en-US/firefox/addon/2077
http://www.codeproject.com/dotnet/expresso.asp
http://weitz.de/regex-coach/

он-лайн
http://www.quanetic.com/regex.php

copch 12.09.2007 11:23

Цитата:

Сообщение от LAndrew2 (Сообщение 1450027)
возвратит результат(ы), который подходит под это выражение

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

Gr@nd@d 25.09.2007 17:31

Цитата:

Сообщение от LAndrew2 (Сообщение 1450179)
Drakosha,
ну это понятно... меня б устроило, например, пять любых подходящих вариантов

Погляди на небольшой набор кросплатформенных функциональных утилит GNU utilities for Win32

LAndrew2 05.11.2007 23:35

господа, а кто знает - в Delphi 7 регулярные выражения поддерживаются?
как бы разобрать ими параметры командной строки:
application.exe /new /file="C:\Program Files\Test\test.doc" /name="Очень-очень важный документ"
чтоб в отдельной переменной получить значение параметра file, в другой переменной - name (при этом каждый параметр необязателен)

Gr@nd@d 06.11.2007 06:39

Цитата:

Сообщение от LAndrew2 (Сообщение 1480150)
господа, а кто знает - в Delphi 7 регулярные выражения поддерживаются?

Стандартно нет, конечно. Но есть вполне юзабельные библиотечки. Я давно и успешно использую вот эту:

Цитата:

TRegExpr
Delphi/Kylix/FreePascal library

Easy to use and powerfull tool for
sophisticated search and substitutioning
and for template-based text checking
(especially usefull for user input
validation in DBMS and web projects).

You can validate e-mail adresses, extract
phone numbers or ZIP-codes from web-pages
or documents, search for complex patterns
in log files and all You can imagine!
Rules (templates) can be changed without
Your program recompilation!

As a language for rules used subset of
Perl's regular expressions (regexp).

Full source codes included, pure Object
Pascal. Thus, You need no DLL!

Documentation in English, Russian, German,
Bulgarian, French and Spanish available at
TRegExpr home page http://anso.da.ru/ or
http://anso.virtualave.net/

(c) 2004 Andrey V. Sorokin
mailto:anso@mail.ru
Saint Petersburg, Russia
Ну а "разобрать" уже дело техники ;)

crawler 06.11.2007 17:02

А не лучше ли поискать компонент для разбора параметров командной строки?

Gr@nd@d 06.11.2007 17:27

Цитата:

Сообщение от crawler (Сообщение 1480464)
А не лучше ли поискать компонент для разбора параметров командной строки?

А оно надо? :idontnow: Для конкретного случая накидать процедуру парсинга совершенно несложно.
А в общем случае универсальнее регулярных выражений пока ничего не придумали ;)

Hubbitus 10.11.2007 11:08

Цитата:

Сообщение от Gr@nd@d (Сообщение 1480479)
А в общем случае универсальнее регулярных выражений пока ничего не придумали

Еще как придумали, даже стандартизовали getopt, getopt_long в POSIX. Для винды тоже где-то помнится видел подобную реализацию.

Gr@nd@d 12.11.2007 16:56

Цитата:

Сообщение от Hubbitus (Сообщение 1482258)
Еще как придумали, даже стандартизовали getopt, getopt_long в POSIX. Для винды тоже где-то помнится видел подобную реализацию.

Оне точно универсальнее регулярных в смысле парсинга? ;)

Hubbitus 13.11.2007 02:45

Цитата:

Сообщение от Gr@nd@d (Сообщение 1483102)
Оне точно универсальнее регулярных в смысле парсинга?

В смысле парсинга опций командной строки - да. Регулярные выражения слишком общие, мощный инструмент, который в принципе (а почему бы и нет?) может быть положен в основу написания библиотеки разбора аргументов, вроде getopt. Сами по себе же, регулярные выражения не есть инструмент разбора аргументов командной строки.

Drakosha 13.11.2007 10:37

ага, ещё popt есть кстати :). и в boost чего-то...

Gr@nd@d 14.11.2007 14:34

Цитата:

Сообщение от Hubbitus (Сообщение 1483337)
В смысле парсинга опций командной строки - да.

"Да не согласный я!" (с) П.П. Шариков, Собачье сердце ;)
Ну и чем они универсальнее?

Регулярные выражения разумеется "не есть инструмент разбора аргументов командной строки", это есть инструмент разбора какой угодно строки (или многих строк). Не вижу смысла изобретать какие-то специфические штуки, если есть готовый, универсальный, кросплатформенный и к тому же достаточно легкий механизм. Ну возможно для каких-то специфических случаев, если они часто используется в проекте, можно оформить вызов в виде отдельной функции, на то они (функции) и предназначены. Но ваять целую библиотеку... :eek: Да что там делать целой библиотеке? Парсить одну строку? :idontnow:

Drakosha 14.11.2007 15:14

Делать такой библиотеке много чего, например генерировать help и т.д.

Hubbitus 15.11.2007 00:19

Цитата:

Сообщение от Gr@nd@d (Сообщение 1483991)
Да что там делать целой библиотеке? Парсить одну строку?

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

Ну и чтобы понять зачем библиотека и что она делает - можете просто посмотреть исходники, или почитать об ее опциях/возможностях в любом учебнике по азам программирования в *NIX.

Gr@nd@d 15.11.2007 09:56

Цитата:

Сообщение от Drakosha (Сообщение 1484013)
Делать такой библиотеке много чего, например генерировать help и т.д.

Это, конечно, дело хорошее, спору нет. Когда необходимость есть.

Цитата:

Сообщение от Hubbitus (Сообщение 1484270)
По такой логике можно черти до чего дойти, например абсолютно логично будет и следующее вывести: а зачем тогда регулярные выражения?

А по "не такой" можно дойти до писания библиотеки на каждый чих.
Регулярные - как раз золотая середина :imho:
Вернись, плиз, чуть раньше по треду - человек задал вполне конкретный вопрос:
Цитата:

Сообщение от LAndrew2
господа, а кто знает - в Delphi 7 регулярные выражения поддерживаются?

да и топик соответствующий...

Цитата:

Сообщение от Hubbitus (Сообщение 1484270)
Ну и чтобы понять зачем библиотека и что она делает - можете просто посмотреть исходники, или почитать об ее опциях/возможностях в любом учебнике по азам программирования в *NIX.

Ну начинается "мерянье пипками" :duel:
Не хочется мне здесь флеймить за никсы/позиксы/итп - топик не совсем тот :мир:
да и разговор этот явно для большой бочки пива :beer:

crawler 22.11.2007 10:12

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

Some people, when confronted with a problem, think "I know, I'll use regular expressions." Now they have two problems.
—Jamie Zawinski, <alt.religion.emacs> (08/12/1997)


Часовой пояс GMT +4, время: 23:27.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.