Извлечение регулярных выражений в текстовых редакторах - PullRequest
4 голосов
/ 26 марта 2009

Я новичок в программировании, так что извините, если это ужасно очевидно (что было бы радостной новостью).

В свободное время я занимаюсь разработкой PHP, используя pregmatch, и пишу большинство своих выражений с помощью бесплатного тестера Regex (с открытым исходным кодом?).

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

Мне бы хотелось что-то вроде простого текстового редактора, в который я мог бы передать свое выражение (учитывая файл или буфер, заполненный вставленным текстом) и заставить его анализировать выражение и возвращать документ только с результатами.

Обычно я обнаруживаю функции поиска / замены регулярных выражений, так как в Notepad ++ я легко могу найти (и заменить) все экземпляры, используя выражение, но я просто не знаю, как только извлечь его ...

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

<a href="/browse/0/b/-dbm/a/0-0/1200000([^/]*)/0.html">([^<]*)</a>

И заменить все, что не ничем. Но я уверен, что это что-то общее и простое, я бы очень признателен за любые мысли.

FWIW Я знаю, что grep и я могли бы сделать это, используя это, но я надеюсь, что это лучшее решение, о котором я просто не знаю.

Спасибо.

Zach


То, на что я надеялся, было бы чем-то, что работало бы в более стандартном наборе инструментов графического интерфейса (то есть инструментов, которые я, возможно, уже использовал). Я ценю все ответы, но я надеялся избежать использования perl, vi или grep, иначе я бы сам написал сценарий (разумеется, я так сделал), поскольку все они были относительно мощными инструментами низкого уровня.

Может быть, я не был достаточно ясен. Мне, как старшему системному администратору, знакомые мне инструменты, мне они очень нравятся. Работая дома, я обнаружил, что большую часть своего времени я провожу в графическом интерфейсе, например Netbeans или Notepad ++. Я просто думаю, что был бы простой способ добиться извлечения данных на основе регулярных выражений с помощью этих инструментов (поскольку в этих случаях я бы уже использовал их).

Что-то смутно похожее на то, что я имел в виду, будет this , который будет принимать выражение в первой строке и URL-адрес во второй строке, а затем извлекать (возвращать) данные.

Это некрасиво (я снесу это после сегодняшнего вечера, так как, вероятно, оно изобилует проблемами).

В любом случае, спасибо за ваши ответы. Я ценю это.

Ответы [ 7 ]

3 голосов
/ 26 марта 2009

Если вам нужен текстовый редактор с хорошей поддержкой регулярных выражений, я настоятельно рекомендую Vim. Движок регулярных выражений Vim довольно мощный и хорошо интегрирован в редактор. например,

:g!/regex/d

Это говорит об удалении каждой строки в вашем буфере, которая не соответствует шаблону regex.

:g/regex/s/another_regex/replacement/g

Это говорит о том, что в каждой строке, которая соответствует regex, выполните другой поиск / замену, чтобы заменить текст, соответствующий another_regex, replacement.

Если вы хотите использовать командную строку grep или однострочник Perl / Ruby / Python / PHP для любого другого инструмента, вы можете отфильтровать текст текущего буфера через этот инструмент и обновить буфер, чтобы отразить результаты:

:%!grep regex
:%!perl -nle 'print if /regex/'
1 голос
/ 26 марта 2009

Вы пробовали nregex.com?

http://www.nregex.com/nregex/default.aspx

Здесь есть плагин для Netbeans, но разработка выглядит застопорившейся:

http://wiki.netbeans.org/Regex

http://wiki.netbeans.org/RegularExpressionsModuleProposal

Вы также можете попробовать регулятор:

http://sourceforge.net/projects/regulator/

0 голосов
/ 30 марта 2009

Хороший текстовый редактор может использоваться для выполнения действий, которые вы описываете. Я использую EditPadPro для поиска и замены функциональности, и у него есть некоторые другие приятные особенности, включая раскраску кода для большинства основных форматов. Функциональность панели поиска включает режим регулярных выражений, который позволяет вам вводить регулярное выражение, а затем искать первый экземпляр, который определяет, соответствует ли ваше выражение соответствующей информации, а затем дает возможность заменить итеративно или все экземпляры.

http://www.editpadpro.com

0 голосов
/ 26 марта 2009

Я знаю, что grep упоминался, и вы не хотите использовать инструмент cli, но я думаю, что ack заслуживает упоминания.

ack - инструмент, подобный grep, направленный на программисты с большими деревьями гетерогенный исходный код.

ack написан исключительно на Perl, и использует силу Perl's регулярные выражения.

0 голосов
/ 26 марта 2009

Мое предложение - grep и cygwin , если вы застряли на коробке с Windows.

echo "text" | grep <a href="/browse/0/b/-dbm/a/0-0/1200000([^/]*)/0.html">([^<]*)</a>

OR

cat filename | grep <a href="/browse/0/b/-dbm/a/0-0/1200000([^/]*)/0.html">([^<]*)</a>
0 голосов
/ 26 марта 2009

То, что я хотел бы, это что-то вроде простой текстовый редактор, который я могу кормить выражение для (дано файл или буфер заполнен вставленным текстом) и имеет он разбирает выражение и возвращает документ только с результатами.

Вы только что описали grep. Это именно то, что делает grep. Что с ним не так?

0 голосов
/ 26 марта 2009

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

Обычно с! оператор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...