Что нового

Как найти некое количество цифр, идущих подряд

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
Добрый день!
Очень прошу помощи!!
Есть ряд строк вида:

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

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

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
MsgBox(32,'',StringRegExpReplace(ClipGet(),'.*?([0-9]{6,15}).*','\1'))
 
Автор
В

ВиталийВВ

Новичок
Сообщения
177
Репутация
0
А если совпадений не найдено, то вывести, скажем: pusto
Это можно как то добавить?
(сейчас при отсутствии совпадений выводит саму строку, целиком)
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Код:
$zz=StringRegExpReplace(ClipGet(),'.*?([0-9]{6,15}).*','\1')
If Not @extended Then $zz='нихера'
MsgBox(32,'',$zz)
 
Автор
В

ВиталийВВ

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


Добавлено:
Сообщение автоматически объединено:


Код:
#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 элементом
 

xXx

╚{■_■}╗
Меценат
Сообщения
248
Репутация
95
Код:
$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 & ']')
 
Верх