purebasic.info

PureBasic forum
Текущее время: Вт май 22, 2018 8:51 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 04, 2013 9:15 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2271
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Никита Однороб, нужно по настоящему шарить, что бы всё было точно на сколько это возможно.
Если уверен в себе. то добро пожаловать в ICQ (в профиле). Ну, или E-Mail, IRC.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт мар 05, 2013 11:57 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2271
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Вопрос по поводу "вырезания". Например, ищу цифру в таком тексте:
Цитата:
TEXT TEXT LEFT 4 RIGHT TEXT TEXT

Я могу сделать так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit
 
#regexp = 0
 
If CreateRegularExpression(#regexp, "\QLEFT \E[0-9]\Q RIGHT\E")
  Dim result.s(0)
  Define found.i = ExtractRegularExpression(#regexp, "TEXT TEXT LEFT 4 RIGHT TEXT TEXT", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug result(counter)
  Next
Else
  Debug RegularExpressionError()
EndIf


И на выходе получу найденную строку "LEFT 4 RIGHT", могу ли я теперь "вырезать" лишь цифру? Т.е. что бы получить просто "4" без "LEFT" и без "RIGHT". Разумеется, вырезать через регулярные выражения, а не через работу со строками в PB.

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 12:48 am 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
(\d{1,9})
add
Или можно так (?<=() LEFT.)(\d{1,9})(?=().RIGHT)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 10:50 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
qpAHToMAS писал(а):
И на выходе получу найденную строку "LEFT 4 RIGHT", могу ли я теперь "вырезать" лишь цифру?
А зачем? Вот код, с первого раза достаёт цифру:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit 
 
#regexp = 0
 
If CreateRegularExpression(#regexp, "[0-9]")
  Dim result.s(0)
  Define found.i = ExtractRegularExpression(#regexp, "TEXT TEXT LEFT 4 RIGHT TEXT TEXT", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug result(counter)
  Next
Else
  Debug RegularExpressionError()
EndIf


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 10:58 am 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Никита Однороб
Вот достань из этого текста только четверку
Код:
1
2
3
TEXT TEXT 3LEFT 3 RIGHT3 TEXT TEXT
TEXT TEXT 4LEFT 4 RIGHT4 TEXT TEXT
TEXT TEXT 5LEFT 5 RIGHT5 TEXT TEXT


:D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:02 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
MrF писал(а):
Вот достань из этого текста только четверку
А фигушки, достал :D
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit 
 
#regexp = 0
 
If CreateRegularExpression(#regexp, "[ ][0-9][ ]")
  Dim result.s(00)
  Define found.i = ExtractRegularExpression(#regexp, "TEXT TEXT 4LEFT 4 RIGHT4 TEXT TEXT ", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug Trim(result(counter))
  Next
Else
  Debug RegularExpressionError()
EndIf



Ещё будешь тестировать по регуляркам? :D :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:18 am 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
Из всего текста, а не из второй строки. Хитрец :D


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:19 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2271
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
MrF писал(а):
(\d{1,9})

Это походу не то.

MrF писал(а):
Или можно так (?<=() LEFT.)(\d{1,9})(?=().RIGHT)

Позже проверю.

Никита Однороб писал(а):
А зачем? Вот код, с первого раза достаёт цифру:

Никита Однороб писал(а):
А фигушки, достал Very Happy

Цифр может быть сотня, надо именно ту, которая между "LEFT " и " RIGHT".

_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:21 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
qpAHToMAS писал(а):
Цифр может быть сотня, надо именно ту, которая между "LEFT " и " RIGHT"
Вот пример:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit 
 
#regexp = 0
 
If CreateRegularExpression(#regexp, "[ ][0-9]+[ ]")
  Dim result.s(00)
  Define found.i = ExtractRegularExpression(#regexp, "22TEXT 44TEXT232 58LEFT 42 RIGHT4534 23TEXT 2TEXT 45455", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug Trim(result(counter))
  Next
Else
  Debug RegularExpressionError()
EndIf

Цифр много, а достаёт именно 42 (между LEFT и RIGHT)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:23 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
MrF писал(а):
Из всего текста, а не из второй строки. Хитрец :D
Я из второй строки доставал :D

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:26 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
Никита Однороб писал(а):
Цифр много, а достаёт именно 42 (между LEFT и RIGHT)

Да? А так чЁ дАстаёт?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit 
 
#regexp = 0
 
If CreateRegularExpression(#regexp, "[ ][0-9]+[ ]")
  Dim result.s(00)
  Define found.i = ExtractRegularExpression(#regexp, "22TEXT 44 TEXT232 58LEFT 42 RIGHT4534 23TEXT 2TEXT 45455", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug Trim(result(counter))
  Next
Else
  Debug RegularExpressionError()
EndIf


_________________
.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:26 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт июн 25, 2009 1:02 pm
Сообщений: 2271
Откуда: Russia — Belarus
Благодарил (а): 5 раз.
Поблагодарили: 71 раз.
Пункты репутации: 11
Никита Однороб писал(а):
Цифр много, а достаёт именно 42 (между LEFT и RIGHT)

:?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
EnableExplicit
#regexp = 0
If CreateRegularExpression(#regexp, "[ ][0-9]+[ ]")
  Dim result.s(00)
  Define found.i = ExtractRegularExpression(#regexp, "22 TEXT 44 TEXT232 58 LEFT 42 RIGHT 4534 23 TEXT 2 TEXT 45455", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug Trim(result(counter))
  Next
Else
  Debug RegularExpressionError()
EndIf


_________________
EnableExplicit User


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:28 am 
Не в сети
профессор

Зарегистрирован: Вс июн 10, 2012 8:18 am
Сообщений: 1294
Благодарил (а): 60 раз.
Поблагодарили: 49 раз.
Пункты репутации: 14
qpAHToMAS писал(а):
Это походу не то.

Это если из короткого текста "LEFT 4 RIGHT" выдергивать.

Никита Однороб
Нет, твой пример достает только те цифры у которых пробелы по бокам. В этой строке "22 TEXT 44 TEXT232 58 LEFT 42 RIGHT 45 34 23 TEXT 2 TEXT 45455 " он все найдет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:31 am 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Чт дек 17, 2009 4:49 pm
Сообщений: 1230
Откуда: г. Ангарск
Благодарил (а): 2 раз.
Поблагодарили: 15 раз.
Пункты репутации: 10
qpAHToMAS
Пробуй
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
EnableExplicit 
 
#regexp = 0
 
If CreateRegularExpression(#regexp, "(?<=LEFT)\s[0-9]+\s(?=RIGHT)")
  Dim result.s(00)
  Define found.i = ExtractRegularExpression(#regexp, "22TEXT 44 TEXT232 58LEFT 42 RIGHT4534 23TEXT 2TEXT 45455", result())
  Define counter.i
  For counter = 0 To found - 1
    Debug Trim(result(counter))
  Next
Else
  Debug RegularExpressionError()
EndIf


_________________
.


Последний раз редактировалось lakomet Ср мар 06, 2013 11:32 am, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср мар 06, 2013 11:37 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 81 раз.
Пункты репутации: 24
Код lakomet'а робит. :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 90 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB