Что нового

[RegExp] Захват после слова

MockeR

Знающий
Сообщения
101
Репутация
14
Всем привет.
Есть строка такого вида:
<1>this<8>sample<6>!split!<9>some<2>test<3>text<4>blah&5i0
Как можно получить все цифры, которые находятся между < > после !split! ?
То есть нужно получить 9, 2, 3, 4.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
#include <array.au3>
$string = '<1>this<8>sample<6>!split!<9>some<2>test<3>text<4>blah&5i0'
$strpos = StringInStr($string,'!<')
$regex = StringRegExp($string,'<(\d)>',3,$strpos)
_ArrayDisplay($regex)
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
Та так я и сам могу сделать ;D
Я хочу узнать, можно ли одной регуляркой все получить? :scratch:
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
MockeR
ну да так бы и сделал. одна дополнительная строка не увеличивает работу программы. я вообще регулярными пользуюсь редко. достаточно обычных функций работы со строкой.
и еще. насчет "додумался бы" я что то сильно сомневаюсь . к тому же, за любое внимание к твоему вопросу (даже если это не оправдало твои ожидания) следует проявлять благодарность. иначе рискуешь вообще без помощи остаться
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Код:
#include <array.au3>
$string = '<1>this<8>sample<6>!split!<9>some<2>test<3>text<4>blah&5i0'
$pattern = '(?:.*!split!|.)<(\d)>'
$regex = StringRegExp($string,$pattern,3)
_ArrayDisplay($regex)


Но мне больше нравится вариант joiner
 
Автор
M

MockeR

Знающий
Сообщения
101
Репутация
14
C2H5OH, отлично :ok:
Немного подправил паттерн
Код:
$pattern = '(?:.*!split!|.).*?<(\d)>'

и теперь все работает.
 
Верх