Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.fds-net.ru/showflat.php?Number=6865818&src=arc&showlite=
Дата изменения: Unknown
Дата индексирования: Tue Apr 12 17:45:00 2016
Кодировка: Windows-1251
как записать regexp паттерн - Public forum of MSU united student networks
Root | Google | Yandex | Mail.ru | Kommersant | Afisha | LAN Support
  
Technical >> Development (Archive)

Страницы: 0 | 20 | показать все | след. страница
AvovA
cool russian dude

Рег.: 06.11.2002
Сообщений: 2425
Из: Toronto, Canada
Рейтинг: 447
  как записать regexp паттерн
      13.11.2007 01:48
 

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

Ищется строка такого вида
\s*(слово на русском языке) (разделитель из пробела или других символов типа -, :, - , с обоих сторон еще и пробелы могут быть)(слово на русском языке)( : (двоеточие), возможно окруженное пробелами, может просто пробелы без : )(цифра, а потом все что угодно)



пишите письма :p
Krasin

Рег.: 23.06.2004
Сообщений: 7039
Из: Калифорния
Рейтинг: 3386
  Re: как зависать regexp паттерн [re: AvovA]
      13.11.2007 01:54
-2

Возможно
code:
\s*[абвгдеежзийклмнопрстуфхцчшщъыьэюя]+\s*[\-:-]\s*[абвгдеежзийклмнопрстуфхцчшщъыьэюя]+\s*[:]?\s*\d.*


вместо перечисления русского алфавита можно сделать через указание интервалов кодов в юникоде, но мне лень искать какие там коды. Плюс, в этом примере надо запускать с флагом CaseInsensitive

и посмотри - работает ли движок, который ты используешь на
code:
ля-ля 5

если нет, то самое простое - сделать два регекспа. Один на случай, если двоеточие перед цифрой есть, второй - если нет

AvovA
cool russian dude

Рег.: 06.11.2002
Сообщений: 2425
Из: Toronto, Canada
Рейтинг: 447
  Re: как зависать regexp паттерн [re: Krasin]
      13.11.2007 02:06
 

Quote:

[:]?



А почему не просто :?



пишите письма :p
alepar

Рег.: 18.02.2004
Сообщений: 9216
Рейтинг: 3643
  Re: как зависать regexp паттерн [re: AvovA]
      13.11.2007 02:17
 


 полагаю, что
Quote:

( : (двоеточие), возможно окруженное пробелами, может просто пробелы без : )







Whatever you do in life will be insignificant, but it's very important that you do it.
botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: как записать regexp паттерн [re: AvovA]
      13.11.2007 10:53
 

у меня обычно работают русские буквы так: а-яе
\s можно включать в []
вот эта фраза не совсем ясна:
В ответ на:

разделитель из пробела или других символов типа -, :, - , с обоих сторон еще и пробелы могут быть



имеется ввиду вперемежку пробелы и знаки?
или если несоклько знаков то пробелы между ними нельзя?
короче, вот это нормально? " :- :- " или должно быть только " :-:- "?

code:
\s*[А-Яа-яЕе]+[\s-:-]*[А-Яа-яЕе]+\s*:?\s*\d.*


почему [:]? я кстати тоже не понял
что ответил alepar тем более не понял



Хватит дрочить на рейтинги
chunky_bacon
chunky_bacon

Рег.: 08.10.2006
Сообщений: 1996
Рейтинг: 820
  Re: как записать regexp паттерн [re: botWi]
      13.11.2007 11:10
 

Либо alepar ответил правильно на вопрос 'А почему не просто :?', либо вопрос 'А почему не просто :??' был сформулирован грамматически неверно - без вопросительного знака в конце. :)

Кстати, тоже не понял, зачем писать [:]?, если можно написать :?.

Forest
Carpal Tunnel

Рег.: 29.08.2002
Сообщений: 11597
Рейтинг: 795
  Re: как записать regexp паттерн [re: AvovA]
      13.11.2007 11:17
 

Есть такая прога - RegexBuddy .
Там есть такая прикольная штука как отображение регэкспов в токенах.
Еще не понял, насколько это полезно, но вполне может помочь лучше разобраться в регэкспе.

botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: как записать regexp паттерн [re: Forest]
      13.11.2007 11:18
 

+1

тоже ею пользуюсь :)
правда редко, обычно сходу пишу



Хватит дрочить на рейтинги
Forest
Carpal Tunnel

Рег.: 29.08.2002
Сообщений: 11597
Рейтинг: 795
  Re: как записать regexp паттерн [re: botWi]
      13.11.2007 11:23
 

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

penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: chunky_bacon]
      13.11.2007 13:08
 

В ответ на:

Кстати, тоже не понял, зачем писать [:]?, если можно написать :?.



+1.
Только, вроде бы, все-таки \:?



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
chunky_bacon
chunky_bacon

Рег.: 08.10.2006
Сообщений: 1996
Рейтинг: 820
  Re: как записать regexp паттерн [re: penartur2]
      13.11.2007 13:14
 

У меня работает :?.
Python, модуль re.

botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: как записать regexp паттерн [re: penartur2]
      13.11.2007 13:14
 

В ответ на:

\:?




в регэкспах экранируются "команды"
: - это какая команда?



Хватит дрочить на рейтинги
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: botWi]
      13.11.2007 13:25
-1

В ответ на:

The fact that plain parentheses fulfil two functions is not always helpful. There are often times when a grouping subpattern is required without a capturing requirement. If an opening parenthesis is followed by "?:", the subpattern does not do any capturing, and is not counted when computing the number of any subsequent capturing subpatterns. For example, if the string "the white queen" is matched against the pattern the ((?:red|white) (king|queen)) the captured substrings are "white queen" and "queen", and are numbered 1 and 2. The maximum number of captured substrings is 99, and the maximum number of all subpatterns, both capturing and non-capturing, is 200.

As a convenient shorthand, if any option settings are required at the start of a non-capturing subpattern, the option letters may appear between the "?" and the ":".



Т.е., у двоеточия есть и специальное значение.
Так что, лучше, во избежание неприятностей, все-таки заэкранировать.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: chunky_bacon]
      13.11.2007 13:31
 

Например.
Ты что, экономишь на бэкслэшах?



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
botWi

Рег.: 22.11.2003
Сообщений: 10160
Из: Moscow
Рейтинг: 1764
  Re: как записать regexp паттерн [re: penartur2]
      13.11.2007 13:32
 

В ответ на:

Ты что, экономишь на бэкслэшах?




они ухудшают читаемость



Хватит дрочить на рейтинги
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: botWi]
      13.11.2007 13:34
-2

Наоборот. Если видишь \: - то сразу понятно, тут имеется в виду именно символ ":". А если видишь : - то имеется в виду что угодно, вплоть до того, что автор регэкспа мог забыть написать ? после скобки.
(a?i:qwe) - вот что он имел в виду, почему его функция (в которой этот регэксп) возвращает неправильный ответ?
А если (a?i\:qwe) - то все понятно, никаких вариантов.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: chunky_bacon]
      13.11.2007 13:35
 

Тогда уж не букву P, а угловые скобки.
Которые, кстати, еще и в assertions используются.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: chunky_bacon]
      13.11.2007 13:39
 

В ответ на:

Не вижу смысла писать их куда попало.



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



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
penartur2

Рег.: 16.06.2005
Сообщений: 54495
Рейтинг: 429
  Re: как записать regexp паттерн [re: chunky_bacon]
      13.11.2007 13:51
 

Для альтернативно одаренных - представь, что тебе надо разбираться в чужой функции. Она почему-то возвращает неверный результат. В ней - вот такой регэксп. Если ':' экранирована - то сразу понятно, что имелось в виду. А если не экранирована - то остается простор аж для трех опечаток.
Конечно, если тебе насрать, насколько читаем твой код, и насрать на тех, кто будет в нем разбираться - твое дело. Я рад, что я не работаю с тобой.



Я ушел на новый форум.
Там правовое государство. А еще можно удобно листать аплоад ;)
burivuh
Carpal Tunnel

Рег.: 08.08.2004
Сообщений: 4452
Рейтинг: 1567
  Re: как записать regexp паттерн [re: chunky_bacon]
      13.11.2007 14:00
 

Жжошь плазмой! :D



Послушай, иногда мужчинам... нужно уважение иметь лицо (с) Безымянный переводчик
Страницы: 0 | 20 | показать все | след. страница

Technical >> Development (Archive)

Дополнительная информация
2 зарегистрированных и 0 анонимных пользователей просматривают этот форум.

Модераторы:  DarkGray 

Печать темы
>>
Права
      Вы можете создавать новые темы
      Вы можете отвечать на сообщения
      HTML отключен
      UBBCode включен

Рейтинг:
Просмотров темы:

Переход в