24.01.2013, 06:07
|
Аспирант
|
|
Регистрация: 20.07.2012
Сообщений: 64
|
|
вопрос по регуляркам
Здравствуйте.
Начал потихоньку осваивать регэксы.
Есть у меня массив (234,357,3,6,96), хочу вытянуть из него последнюю цифру. Сделал:
/\(\d*,\d*,\d*,\d*,(\d*)\)/
в принципе меня устраивает, работает, но хочется углубиться. По факту массив может быть не из 5, а допустим из 20-30 цифр, не хочется нагромождения.
Подскажите пожалуйста как рациональнее заменить?
попробовал так:
/\([\d*,]{4}?(\d*)\)/
но что-то не то..
Последний раз редактировалось JustCrazy, 24.01.2013 в 06:32.
|
|
24.01.2013, 09:03
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,121
|
|
JustCrazy,
alert("(234,357,3,6,96)".replace(/\(.+,(\d+)\)$/,"$1"));
Последний раз редактировалось рони, 24.01.2013 в 09:06.
|
|
24.01.2013, 09:16
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
Сообщение от JustCrazy
|
Есть у меня массив (234,357,3,6,96)
|
С массивом лучше работать как с массивом.
Сообщение от JustCrazy
|
хочу вытянуть из него последнюю цифру. Сделал:
/\(\d*,\d*,\d*,\d*,(\d*)\)/
в принципе меня устраивает, работает
|
Не пойму что тебя там устраивает...
var s='(234,357,3,6,96)';
var r=/\(\d*,\d*,\d*,\d*,(\d*)\)/;
alert(s.replace(r,''))
alert(s.search(r))
Показывает пусто и ноль...
|
|
24.01.2013, 09:30
|
Аспирант
|
|
Регистрация: 20.07.2012
Сообщений: 64
|
|
Сообщение от ksa
|
Не пойму что тебя там устраивает...
Показывает пусто и ноль...
|
у меня php код, все работает, как часы
Сообщение от ksa
|
С массивом лучше работать как с массивом.
|
вообще если начинать с самого начала, то это кусок исходного кода страницы, с которой я тяну этот массив, конечно можно вытянуть все от скобки до скобки, а потом эксплойдом распарсить и взять необходимое мне значение, но это можно сделать проще и по объему меньше через регулярки, которые я пытаюсь осваивать
Сообщение от рони
|
JustCrazy,
alert("(234,357,3,6,96)".replace(/\(.+,(\d+)\)$/,"$1"));
|
вот это хорошо, но как быть, если мне надо вытянуть какое то промежуточное значение, например 3е, или 4е, или 27е.. и т.д. ? извиняюсь, изначально немного неправильно вопрос поставил.
есть что нибудь объединяющее пару символов повторяющихся ?
Последний раз редактировалось JustCrazy, 24.01.2013 в 09:40.
|
|
24.01.2013, 09:42
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
Сообщение от JustCrazy
|
у меня php код, все работает, как часы
|
Покажи как используешь
|
|
24.01.2013, 09:49
|
Аспирант
|
|
Регистрация: 20.07.2012
Сообщений: 64
|
|
Сообщение от ksa
|
Покажи как используешь
|
$url='...';
$data = file_get_contents($url);
if (preg_match("/new\sstats\(\d*,\d*,\d*,\d*,\d*,\d*,\d*,\d*,\d*,(\d*),\d*,\d*,(\d*),\d*,\d*,\d*,\d*\)/i",$data,$lists))
{ echo $list[1].$list[2]; } else { echo 'cant found'; }
|
|
24.01.2013, 09:50
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
JustCrazy, применительно к JS.
|
|
24.01.2013, 09:54
|
Аспирант
|
|
Регистрация: 20.07.2012
Сообщений: 64
|
|
Сообщение от ksa
|
JustCrazy, применительно к JS.
|
если бы я еще знал JS.. имеются только поверхностные знания...
все же регулярки они и в африке регулярки.. и вопрос по упрощению остается открытым)
|
|
24.01.2013, 09:58
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
Сообщение от JustCrazy
|
если мне надо вытянуть какое то промежуточное значение, например 3е
|
Как вариант...
var s='(234,357,3,6,96)';
var i=3;
s=s.substring(1,s.length-1);
alert(s.split(',')[3])
|
|
24.01.2013, 10:02
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,225
|
|
Сообщение от JustCrazy
|
если бы я еще знал JS.. имеются только поверхностные знания...
|
Во как будет на JS
var s='(234,357,3,6,96)';
var r=/\(\d*,\d*,\d*,\d*,(\d*)\)/;
alert(s.replace(r,'$1'))
|
|
|
|