LINUX.ORG.RU
ФорумTalks

Кто там хотел человекочитабельные регэкспы?

 , , , ,


2

2

Помнится, кто-то тут создавал некоторое время назад такую тему. Собственно, теперь это реальность: https://github.com/jehna/VerbalExpressions

Регулярки можно писать теперь так:

// Create an example of how to test for correctly formed URLs
var tester = VerEx()
            .startOfLine()
            .then( "http" )
            .maybe( "s" )
            .then( "://" )
            .maybe( "www." )
            .anythingBut( " " )
            .endOfLine();

// Create an example URL
var testMe = "https://www.google.com";

// Use RegExp object's native test() function
if( tester.test( testMe ) ) alert( "We have a correct URL "); // This output will fire
else alert( "The URL is incorrect" );

console.log( tester ); // Ouputs the actual expression used: /^(http)(s)?(\:\/\/)(www\.)?([^\ ]*)$/ 

★★★★

Выглядит весьма неплохо.

netcat ★★
()

это прорыв. Уровня не ниже сколкого.

Bad_ptr ★★★★★
()

java, javascript, php, ruby

И это всё?

olibjerd ★★★★★
()

Как будто читабельность в регэкспах важнее написабельности.

schizoid ★★★
()

Как-то многословно... Может, не осилившим лучше Фридла читать?

lucentcode ★★★★★
()
Ответ на: комментарий от alozovskoy

Два чаю вам.

Лучше писать регэкспы нечитаемыми, поглядывая в ман, чем городить простыню.

evilmanul
()

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

x3al ★★★★★
()

Это для тех кто не осилил мануал по регепсам? Хорошо, будет еще больше идиотов знающих какие-то левые и ненужные никому технологии. Теперь напиши мне регепс:

/(?<=[^>])\n/

gh0stwizard ★★★★★
()

Кто там хотел человекочитабельные регэкспы?

имхо нужно двигаться в сторону «регекспочитающих людей»
Простыню текста читать не проще.

TDrive ★★★★★
()

Если бы регэкспы всегда были такими простыми и короткими...

upcFrost ★★★★★
()
Ответ на: комментарий от x3al

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

Во:

#!/usr/bin/ruby
# -*- encoding : utf-8 -*-

str = "test test http://tt.ru test http://test.ru test http://t_e-st.org test"

r1 = Regexp.new "(?x)(
		https?://       #Протокол http или https
		[a-z0-9_\-]{3,} #Имя домена второго уровня из букв,цифр, тире и знаков подчеркивания, не менее 3 символов
		\.(ru|org)      #Домены первого уровня ru или org
		)(?-x)"

str.scan(r1) do |m| 
	puts m[0]+"\n" 
end
:)

TDrive ★★★★★
()
Последнее исправление: TDrive (всего исправлений: 1)

Переизобрели Снобол?

buddhist ★★★★★
()

Не нравится мне этот пример. Давайте сравним с полным эквивалентом какого-нить типа такого:

/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/

(стырено из http://net.tutsplus.com/tutorials/other/8-regular-expressions-you-should-know/).

Кстати, я для себя на питоне делал вот такой парсер:

(K("HTTP")|K("HTTPS")) + S("://") + LIST(WORD, sep=".")

true_admin ★★★★★
()

Гы. Прикольно. За идею пять. Но по-моему все-таки не практично. Проще регексп на строки разбить.

Vit ★★★★★
()
Ответ на: комментарий от Vit

идея ?
чет оно сильно смахивает на сишную (или тиклеву) реинкарнацию scanf))

bedcasus
()

если привести не тривиальный пример, а что-нибудь с уровнем вложенности скобок минимум 5, всякими там опережающими проверками и прочим - эту простыню читать будет еще сложнее. и да, как это отменяет понимание принципов работы самих регулярок? синтаксис тут вторичен

George
()
Ответ на: комментарий от Xellos

это чтобы rm -rf /* прямо из js в браузере?) а что, неплохо

George
()
Ответ на: комментарий от PolarFox

Попробую без документации: ищется «\n», перед которым не стоит «>»?

arturpub ★★
()

и что? Ты уверен, что это поможет неосиляторам?

(и даже если это и поможет, разве это хорошо? Будет ЕЩЁ БОЛЬШЕ дебилов-программистов PHP, и больше говнокода)

drBatty ★★
()
Ответ на: комментарий от zz

Оно, надо полагать, комплитится.

ага. В рантайме. По Over9000 раз. Только не говори мне, что неосиляторы осилят вынести ЭТО из циклов. Не поверю. Нельзя быть немножко беременной.

drBatty ★★
()

Ужас какой. В отличие от нормальных регэкспов эту штуку я прочитал раза с четвертого. Нужно только как костыль для не обременненных абстрактным мышлением и не умеющим читать ^https?://(www.)?\S+$

vurdalak ★★★★★
()
Ответ на: комментарий от trex6

Я про то что для парсинга урлов лучше спецбиблиотеку запилить чем затачивать под это синтаксис регэкспов. А визуальные редакторы регэкспов таки есть.

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от DNA_Seq

Ок, тогда прошу прощения за свой выпад в вашу сторону.

trex6 ★★★★★
()

Для питона есть?

Ttt ☆☆☆☆☆
()

Наконец-то не нужно учить всякую дурь наподобе ^?$.

Novator ★★★★★
()

Идея крутая, но Оккам против. Особенно если учесть то, что как и большинство таких проектов, в какой то момент остановиться в развитии и забудется.

sphericalhorse ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.