parserALT
Страницы форума: ← Назад | 1 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 600 | Дальше →

regexp

#1ELEKTpoHuK
27.09.09 20:09
www.parser.ru → | ответить → | в избранное →

regexp

Настроил на локальной машине NConvert скачанный отсюда http://www.kulikoff.net/parser3/img/ Все прекрасно работало. Но стал переносить все это на хостинг (в данном случае masterhost freebsd 6.2) и сразу при запросе информации об изображении стала появляться ошибка.
Стал искать причину -
$fResult.text - выдавал информцию о файле в исходном виде
$fResult.stderr - выдавал wmftogif: not found
$fResult.status - выдавал 0

** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/14:59:37) **
Version for FreeBSD x86 (X11) (All rights reserved)
** This is a freeware software (for non commercial use)


/home/u98130/hev-dog.ru/www//_pic_/dogs/146.jpg : Success
Format : JPEG TrueColor (v1.2)
Name : jpeg
Compression : JPEG
Width : 600
Height : 400
Components per pixel : 3
Bits per component : 8
Depth : 24
# colors : 16777216
Color model : RGB
Bytes Per Plane : 1800
Orientation : Top Left
Xdpi : 100
Ydpi : 100
Page(s) : 1
, wmftogif: not found
, 0

Стал искать причину дальше и остановился на том, что не срабатывает регулярное выражение
^fInfo.text.match[^^\s*(\S.+\S)\s+:\s+(.+)\s*^$][gm]
при этом выражение
^fInfo.text.match[^^\ *(.+)\ +:\ +(.+)\ *^$][gm] срабатывает но не дает приемлемый результат
т.к. \s и \S относятся к Спецсимволам в регулярных выражениях то я сделал вывод, что именно спецсимволы и не срабатывают.

Встречался ли кто-нибудь с такой проблемой? Как можно ее решить?
На всякий случай выкладываю код функции в которой происходит ошибка
@_parseInfo[fInfo][sDummy;tSize]
$result[
	$.hRaw[^hash::create[]]
]
# этот код срабатывает и информация пишется в файл но не убирает пробелы после первого слова
$f_info_text[$fInfo.text]
$f_info_match[^f_info_text.match[^^\ *(.+)\ +:\ +(.+)\ *^$][gm]]
^f_info_match.save[/f_info_match.txt]

^if(!$fInfo.status && def $fInfo.text){
	
# а этот код уже не срабатывает
$sDummy[^fInfo.text.match[^^\s*(\S.+\S)\s+:\s+(.+)\s*^$][gm]{
		^result.hRaw.add[$.[$match.1][$match.2]]
		^switch[$match.1]{
			^case[Name]{^result.add[$.sFormat[$match.2]]}
			^case[Compression]{^result.add[$.sCompression[$match.2]]}
			^case[Width]{^result.add[$.iWidth($match.2)]}
			^case[Height]{^result.add[$.iHeight($match.2)]}
			^case[Xdpi]{^result.add[$.iXdpi[$match.2]]}
			^case[Ydpi]{^result.add[$.iYdpi[$match.2]]}
			^case[# colors]{^result.add[$.iColors[$match.2]]}
		}
	}]
}
#end @_parseInfo
#2
→ ELEKTpoHuK [#1] | 27.09.09 23:59
www.parser.ru → | ответить → | в избранное →

Проверить

- одинаковость версий NConvert
- регулярные выражения для таких случаев эффективнее и проще писать "не жадные" - то есть +?, а не +.
#3Misha v.3
→ ELEKTpoHuK [#1] | 28.09.09 01:33
www.parser.ru → | ответить → | в избранное →

стала появляться ошибка.


где подробности об ошибке?


прикольно вы изменили regexp.
если уж выкидывать метасимволы, совпадающими с пробельными символами, то выкидывать (заменять на пробел или на [ ^#09^#0A]) надо \S, а не оставлять вместо него '\ '

но скорее всего дело не в них. по моему разница в том, что другая версия nconvert выдаёт информацию в немного другом виде.
приведите info для локальной версии и для версии на хостинге.


а этот код уже не срабатывает

что это значит?
добавьте такой код перед существующим кодом с match:
$tDummy[^fInfo.text.match[^^\s*(\S.+\S)\s+:\s+(.+)\s*^$][gm]]
^tDummy.save[/f_info_match.table;$.encloser["]]


и покажите, что оказалось в файлах f_info_match.txt и f_info_match.table.
#4ELEKTpoHuK
→ Misha v.3 [#3] | 28.09.09 11:03
www.parser.ru → | ответить → | в избранное →
Благодарю за ответ.
подробности об ошибке
[Mon Sep 28 10:36:11 2009] [77299] /adm/foto.html: /home/u98130/hev-dog.ru/www/_classes_/img.p(73:10): 'info' Unknown image format '/_pic_/dogs/146.jpg' [Img] [uri=/adm/foto.html, method=POST, cl=76474]

выскакивает отсюда (img.p)
# get image info
@info[sFileSrc][fResult]

^self._checkInputFile[info;$sFileSrc]

$fResult[^self._exec[info;
	$.sInput[$sDocRoot/$sFileSrc]
]]
$om[$fResult.text ,  $fResult.stderr , $fResult.status]
^om.save[/om.txt]

$result[^self._parseInfo[$fResult]]

# $result.hRaw пуст, поэтому и ошибка
^if(!$result.hRaw){
	^throw[$sClassName;info;Unknown image format '$sFileSrc']
}
#end @info


regexp менял ради эксперимента (пока не очень хорошо разобрался) но получил почти нужный результат вместо "\S" я "\ " не менял
было
[^^\s*(\S.+\S)\s+:\s+(.+)\s*^$]
стало
[^^\ *(.+)\ +:\ +(.+)\ *^$] в первой скобке я брал все символы от окончания пробелов и хотел, чтобы был включен диапазон до начала пробелов. Но я понимаю что такая конструкция не сработает потому как ".+" как раз и берет все символы до ":" а соответственно и пробелы туда попадают

На локальном
** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/15:20:46) **
Version for Windows NT/9x/2000/Xp/Vista (All rights reserved)
** This is a freeware software (for non commercial use)


c:/apache_swissknife/сайты/hev-dog/html///_pic_/dogs/155.jpg : Success
Format : JPEG TrueColor (v1.2)
Name : jpeg
Compression : JPEG
Width : 600
Height : 400
Components per pixel : 3
Bits per component : 8
Depth : 24
# colors : 16777216
Color model : RGB
Bytes Per Plane : 1800
Orientation : Top Left
Xdpi : 100
Ydpi : 100
Page(s) : 1
, , 0

На сервере

** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/14:59:37) **
Version for FreeBSD x86 (X11) (All rights reserved)
** This is a freeware software (for non commercial use)


/home/u98130/hev-dog.ru/www//_pic_/dogs/146.jpg : Success
Format : JPEG TrueColor (v1.2)
Name : jpeg
Compression : JPEG
Width : 600
Height : 400
Components per pixel : 3
Bits per component : 8
Depth : 24
# colors : 16777216
Color model : RGB
Bytes Per Plane : 1800
Orientation : Top Left
Xdpi : 100
Ydpi : 100
Page(s) : 1
, wmftogif: not found
, 0

я примерно так и пытался проверить
f_info_match.txt
prematch match postmatch 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
/home/u98130/hev-dog.ru/www//_pic_/dogs/146.jpg Success
Format JPEG TrueColor (v1.2)
Name jpeg
Compression JPEG
Width 600
Height 400
Components per pixel 3
Bits per component 8
Depth 24
# colors 16777216
Color model RGB
Bytes Per Plane 1800
Orientation Top Left
Xdpi 100
Ydpi 100
Page(s) 1


f_info_match.table
"prematch" "match" "postmatch" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12" "13" "14" "15" "16" "17" "18" "19" "20" "21" "22" "23" "24" "25" "26" "27" "28" "29" "30" "31" "32" "33" "34" "35" "36" "37" "38" "39" "40" "41" "42" "43" "44" "45" "46" "47" "48" "49" "50" "51" "52" "53" "54" "55" "56" "57" "58" "59" "60" "61" "62" "63" "64" "65" "66" "67" "68" "69" "70" "71" "72" "73" "74" "75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100"
#5ELEKTpoHuK
→ ELEKTpoHuK [#4] | 28.09.09 11:07
www.parser.ru → | ответить → | в избранное →

cтираются и пробелы и табы при размещении в форум

смысл в том - что на сервере что на локалке $fInfo.text выдается идентично
#6ELEKTpoHuK
28.09.09 11:09
www.parser.ru → | ответить → | в избранное →

Проверил

Версии NConvert - одинаковые

** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/14:59:37) **
Version for FreeBSD x86 (X11) (All rights reserved)
** This is a freeware software (for non commercial use)

** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/15:20:46) **
Version for Windows NT/9x/2000/Xp/Vista (All rights reserved)
** This is a freeware software (for non commercial use)


с регулярными выражениями я пока слабо разобрался меня удивляет, что на локалке выражение ^^\s*(\S.+\S)\s+:\s+(.+)\s*^$ срабатывает и дает результат а на хостинге нет.
#7moko
→ ELEKTpoHuK [#1] | 28.09.09 12:27
www.parser.ru → | ответить → | в избранное →

версии парсера

Мне показалось, или забыли указать версии парсера?

Естественно включая OS на сервере разработки (что на хостинге FreeBSD 6.2, было указано).
#8ELEKTpoHuK
→ moko [#7] | 28.09.09 12:53
www.parser.ru → | ответить → | в избранное →
На сервере
Parser/3.3.0 (compiled on i386-unknown-freebsd6.3)

Я извиняюсь, но как проверить версию на локалке?? хотя старше чем 3.3.0 не должна быть..
#9moko
→ ELEKTpoHuK [#8] | 28.09.09 13:11
www.parser.ru → | ответить → | в избранное →

...

Странный вопрос - у вас же вроде как копия сайта на локале?
Обратиться к /cgi-bin/parser3.cgi (или как он у вас называется) или просто запустить из командной строки...
#10ELEKTpoHuK
→ moko [#9] | 28.09.09 13:46
www.parser.ru → | ответить → | в избранное →
Согласен, что вопрос странный ))
Но у меня Apache Swissknife
Нашел, что сборка 035 и парсер там 3.2.2b
На хостинге до того как я туда установил 3.3.0 стоял 3.2.3 (и результат был такой же)

И еще, возможно, более странный вопрос - а как запустить парсер из командной строки?
#11Misha v.3
→ ELEKTpoHuK [#4] | 28.09.09 16:11
www.parser.ru → | ответить → | в избранное →
мне верится во всё это с трудом :)
попробуйте запостить $fInfo.text в [code/]

ещё попробуйте в исходном regex-е заменить:
все \s на [^#09^#0A^#20]
все \S на [^^^#09^#0A^#20]
#12ELEKTpoHuK
→ Misha v.3 [#11] | 28.09.09 16:44
www.parser.ru → | ответить → | в избранное →

Спасибо за решение

мне тоже с трудом верится :)
ещё попробуйте в исходном regex-е заменить:
все \s на [^#09^#0A^#20]
все \S на [^^^#09^#0A^#20]

это решило все проблемы - все заработало Благодарю за решение
подскажите пожалуйста где можно почитать про [^#09^#0A^#20], про
[^^^#09^#0A^#20] и т.д. и с чем все таки связано, что \s и \S не работали.

но на всякий случай выкладываю $fInfo.text
вот с хостинга 
** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/14:59:37) **
        Version for FreeBSD x86 (X11)  (All rights reserved)
** This is a freeware software (for non commercial use)


/home/u98130/hev-dog.ru/www//_pic_/dogs/164.jpg : Success
    Format               : JPEG TrueColor (v1.2)
    Name                 : jpeg
    Compression          : JPEG
    Width                : 600
    Height               : 400
    Components per pixel : 3
    Bits per component   : 8
    Depth                : 24
    # colors             : 16777216
    Color model          : RGB
    Bytes Per Plane      : 1800
    Orientation          : Top Left
    Xdpi                 : 100
    Ydpi                 : 100
    Page(s)              : 1
 ,  wmftogif: not found
 , 0


вот с локалки
** NCONVERT v5.50 (c) 1991-2009 Pierre-E Gougelet (Sep 16 2009/15:20:46) **
        Version for Windows NT/9x/2000/Xp/Vista  (All rights reserved)
** This is a freeware software (for non commercial use)


c:/apache_swissknife/сайты/hev-dog/html///_pic_/dogs/163.jpg : Success
    Format               : JPEG TrueColor (v1.2)
    Name                 : jpeg
    Compression          : JPEG
    Width                : 600
    Height               : 400
    Components per pixel : 3
    Bits per component   : 8
    Depth                : 24
    # colors             : 16777216
    Color model          : RGB
    Bytes Per Plane      : 1800
    Orientation          : Top Left
    Xdpi                 : 100
    Ydpi                 : 100
    Page(s)              : 1
 ,   , 0
#13moko
→ ELEKTpoHuK [#10] | 28.09.09 17:04
www.parser.ru → | ответить → | в избранное →

Гм.

И еще, возможно, более странный вопрос - а как запустить парсер из командной строки?

start - run - cmd
c:\путь к парсеру\parser3.exe <enter>

И на хостинге странный парсер:
freebsd6.3
Мы только под 6.2 собирали. Откуда он?
#14Misha v.3
→ ELEKTpoHuK [#12] | 28.09.09 18:15
www.parser.ru → | ответить → | в избранное →

что-то не то у вас с парсером.

не представляю я почему не работают \s и \S. это наша сборка?
в любом случае, я бы не надеялся, что это единственная проблема этой сборки :)

а про [...] и [^...] почитать можно в любой книжке по регулярным выражениями (ссылки на некоторые есть в соотв. разделе).
#15ELEKTpoHuK
→ moko [#13] | 28.09.09 21:14
www.parser.ru → | ответить → | в избранное →
В этом Apache_Swissknife только *.dll я так и не смог выяснить выяснить версию parser
а на хостинг кидал эту версию
http://www.parser.ru/off-line/download/freebsd6/parser3_3_0_freebsd63R_cgi_xml.tar.gz
до этого стояла
http://www.parser.ru/off-line/download/freebsd6/parser3_2_3_freebsd62R_cgi_xml.tar.gz
#16ELEKTpoHuK
→ Misha v.3 [#14] | 28.09.09 21:17
www.parser.ru → | ответить → | в избранное →
Я понимаю, что сложность может быть только у меня или именно на этом хостинге но я ставил парсер с сайта
http://www.parser.ru/off-line/download/freebsd6/parser3_3_0_freebsd63R_cgi_xml.tar.gz
до этого стояла
http://www.parser.ru/off-line/download/freebsd6/parser3_2_3_freebsd62R_cgi_xml.tar.gz

про регулярные выражения поищу получше. Видимо не досмотрел.
Благодарю.
#17Sumo
→ ELEKTpoHuK [#16] | 29.09.09 08:10
www.parser.ru → | ответить → | в избранное →

«Получение версии Parser» (документация)

#18ELEKTpoHuK
→ Sumo [#17] | 29.09.09 12:24
www.parser.ru → | ответить → | в избранное →

3.2.2b, Swissknife build (compiled on i386-pc-win32)

Благодарю за исчерпывающий ответ )
#19ELEKTpoHuK
→ Misha v.3 [#14] | 29.09.09 12:32
www.parser.ru → | ответить → | в избранное →

^#09^#0A^#20

Прошу прощения но не могу найти информацию именно по этим символам ^#09^#0A^#20 прошу подсказать где можно найти или хотя бы намекнуть что это такое.
#20Misha v.3
→ ELEKTpoHuK [#19] | 29.09.09 17:05 / 17:06
www.parser.ru → | ответить → | в избранное →

«Строковые литералы» (документация)

P.S. пора вам доку начать читать и поиском учиться пользоваться. больше отвечать на подобные вопросы не буду.
#21ELEKTpoHuK
→ Misha v.3 [#20] | 29.09.09 18:07
www.parser.ru → | ответить → | в избранное →
Благодарю. Я не мог найти и понять, что это HEX символы. Не пользовался я ими прежде. Теперь мне все понятно.
Страницы форума: ← Назад | 1 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 600 | Дальше →