Автор Тема: Как найти некое количество цифр, идущих подряд  (Прочитано 313 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Эта тема содержит сообщение, помеченное как лучший ответ. Кликните здесь для перехода к этому сообщению.

Оффлайн ВиталийВВ [?]

  • Новичок
  • *
  • Сообщений: 170
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
Добрый день!
Очень прошу помощи!!
Есть ряд строк вида:

SELECT * FROM (SELECT "RIВхКонтОтвет"."Ид","RIВхКонтОтвет"."Контейнер","RIВхКонтОтвет"."ДатаПолучения","RIВхКонтОтвет"."Состояние","RIВхКонтОтвет"."ИмяФайла","RIВхКонтОтвет"."Сообщение" FROM "RIВхКонтОтвет" WHERE ("RIВхКонтОтвет"."Контейнер"=[1594666])) WHERE ROWNUM<=50

Из этой строки надо вычленить и вывести число, при условии, что в нем цифр от 6 до 15, и все они идут подряд (без знаков)
Т.е. после обработки указанной строки будет выведено: 1594666

Русское сообщество AutoIt

Как найти некое количество цифр, идущих подряд
« Отправлен: Ноябрь 15, 2018, 07:53:21 »

Онлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 894
  • Репутация: 360
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
MsgBox(32,'',StringRegExpReplace(ClipGet(),'.*?([0-9]{6,15}).*','\1'))


Оффлайн ВиталийВВ [?]

  • Новичок
  • *
  • Сообщений: 170

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
А если совпадений не найдено, то вывести, скажем: pusto
Это можно как то добавить?
(сейчас при отсутствии совпадений выводит саму строку, целиком)

Помечен как лучший ответ пользователем ВиталийВВ Отправлен Ноябрь 15, 2018, 08:37:51

Онлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 894
  • Репутация: 360
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
$zz=StringRegExpReplace(ClipGet(),'.*?([0-9]{6,15}).*','\1')
If Not @extended Then $zz='нихера'
MsgBox(32,'',$zz)


Русское сообщество AutoIt

Re: Как найти некое количество цифр, идущих подряд
« Ответ #3 Отправлен: Ноябрь 15, 2018, 08:24:27 »

Оффлайн ВиталийВВ [?]

  • Новичок
  • *
  • Сообщений: 170

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.8.1
Еще чуть воспользуюсь помощью,, оказалось, что в некоторых строках возможно наличие нескольких чисел, которые будут удовлетворять условию, т.е. строка может быть вида:
SELECT * FROM (SELECT "RIВхКонтОтвет"."Ид","RIВхКонтОтвет"."Контейнер","RIВхКонтОтвет"."ДатаПолучения","RIВхКонтОтвет"."Состояние","RIВхКонтОтвет"."ИмяФайла","RIВхКонтОтвет"."Сообщение" FROM "RIВхКонтОтвет" WHERE ("RIВхКонтОтвет"."Контейнер"=[1594666|3243216546|9846957465469|11111111111111])) WHERE ROWNUM<=50
Как при таком раскладе вывести все эти числа?
Программка, которая тут, выводит только первое число, а надо бы все, через запятую.
Буду безмерно благодарен, у меня с регулярными выражениями совсем беда :-(


Добавлено: Ноябрь 15, 2018, 10:51:48

Код: AutoIt [Выделить]

#include <Array.au3> ; для использования _ArrayDisplay

$data = 'RIВхКонтейнер.#nvl("ПризИПЮЛ","01")||to_char("ДатаПолучения","YYMMDD")||to_char("Ид")=F01701111598822|F01701111599395|F01701111600057|F01701121602741|F01701121604316|F01701121604427|F01701121605312|F01701131606240|F01701131606505|F01701131606712|F01701131606719|F01701131606722|F01701131606723|F01701131608177|F11701121597725|F41612301588465|F41701061592070|F41701071593202|F41701071593203|F41701081593255|F41701081593502|F41701081593531|F41701081594110|F41701091594130|F41701091594452|F41701091595629|F41701101596036|F41701101596072|F41701101596080|F41701101596610|F41701101596615|F41701101597266|F41701101597274|F41701101598536|F41701101598541|F41701111599507|F41701111599521|F41701111599954|F41701111599974|F41701111600623|F41701111600660|F41701111601347|F41701121601388|F41701121602020|F41701121603507|F41701131603584|F41701131606131|F41701131606156|F41701131606161|F41701131608428|F41701131608450|F41701151609125|F41701151609133|F41701151609160|U01701101594255|U01701101595769|U01701101595775|U01701101595778|U01701101595843|U01701101595879|U01701101595895|U01701101595952|U01701101595976|U01701101596129|U01701101596151|U01701101596178|U01701101596209|U01701101596239|U01701101596241|U01701101596245|U01701101596263|U01701101596307|U01701101596364|U01701101596367|U01701101596483|U01701101596530|U01701101596600|U01701101596705|U01701101596732|U01701101596946|U01701101596986|U01701101597021|U01701101597036|U01701101597040|U01701101597305|U01701101597321|U01701101597538|U01701101597540|U01701101597600|U01701101597625|U01701101597668|U01701101597678|U01701101597688|U01701101597697|U01701101598007|U01701101598014|U01701101598083|U01701101598331|U01701101598363|U01701111598088|U01701111598101|U01701111598826|U01701111599074|U01701111599086|U01701111599095|U01701111599307|U01701111599330|U01701111599390|U01701111599416|U01701111599420|U01701111599426|U01701111599435|U01701111599481|U01701111599482|U01701111599497|U01701111599667|U01701111599819|U01701111599852|U01701111600023|U017011116'
MsgBox(32,'',StringRegExpReplace($data,'.*?([0-9]{6,15}).*','\1', 1))

$aRes = StringRegExp($data, '.*?([0-9]{6,15}).*', 3)
If @error Then Exit ; Проверка ошибки ОБЯЗАТЕЛЬНА.
_ArrayDisplay($aRes, "флаг=3") ; функция для просмотра массива

 


Вроде по хелпу так должно быть, и должен быть выведен массив. массив выводится, но только с 1 элементом
« Последнее редактирование: Ноябрь 15, 2018, 10:52:55 от ВиталийВВ »

Онлайн sngr [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 894
  • Репутация: 360
    • Награды
  • Версия AutoIt: 3.3.8.1
Код: AutoIt [Выделить]
StringRegExp($data, '[0-9]{6,15}', 3)


Оффлайн xXx [?]

  • Новичок
  • *
  • Сообщений: 42
  • Репутация: 11
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.x.x
Код: AutoIt [Выделить]
$sStr = 'RIВхКонтейнер.#nvl("ПризИПЮЛ","01")||to_char("ДатаПолучения","YYMMDD")||to_char("Ид")=F0170111159880000000000000022|F01701111599395|U01701111600023|U017011116'

$aArray = StringRegExp($sStr, '(?:^|\D)(\d{6,15})(?:\D|$)', 3)
$sStr = ''
$iU = UBound($aArray) - 1
For $i = 0 To $iU
    $sStr &= $aArray[$i] & (($i = $iU) ? '' : ', ')
Next
MsgBox(32, '', '[' & $sStr & ']')

« Последнее редактирование: Ноябрь 16, 2018, 00:12:16 от xXx »

Русское сообщество AutoIt

Re: Как найти некое количество цифр, идущих подряд
« Ответ #6 Отправлен: Ноябрь 15, 2018, 23:56:53 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
2 Ответов
3030 Просмотров
Последний ответ Октябрь 30, 2009, 10:24:11
от akoulev
7 Ответов
4914 Просмотров
Последний ответ Ноябрь 03, 2010, 23:47:21
от Garrett
5 Ответов
3504 Просмотров
Последний ответ Ноябрь 05, 2010, 17:53:26
от Yashied
17 Ответов
8545 Просмотров
Последний ответ Июль 14, 2011, 20:49:53
от madmasles
6 Ответов
6232 Просмотров
Последний ответ Август 05, 2011, 23:10:44
от Yashied
1 Ответов
2100 Просмотров
Последний ответ Сентябрь 13, 2013, 09:16:44
от madmasles
19 Ответов
5933 Просмотров
Последний ответ Август 02, 2014, 06:52:24
от Olim98
10 Ответов
1994 Просмотров
Последний ответ Ноябрь 20, 2014, 10:41:52
от Dere
6 Ответов
589 Просмотров
Последний ответ Март 14, 2018, 16:54:13
от InnI
0 Ответов
58 Просмотров
Последний ответ Ноябрь 15, 2018, 07:51:24
от ВиталийВВ