Что нового

Найти значение с помощью одной регулярки

Пост номер 2 был отмечен как лучший ответ.

Webarion

Знающий
Сообщения
83
Репутация
5
Ребята, помогите составить регулярку. Есть следующие данные:
Код:
m=0x10230428;1
c=0x10230428;r=10;g=1;t=1
c=0x10230428;r=20;g=1;t=2
c=0x10230428;r=30;g=2;t=1
c=0x10230428;r=40;g=2;t=2
c=0x10230428;r=50;g=3;t=1
c=0x10230428;r=55;g=3;t=2
m=0x20230429;2
c=0x10230429;r=60;g=4;t=1
c=0x10230429;r=70;g=4;t=2
c=0x10230429;r=80;g=5;t=1
c=0x10230429;r=85;g=5;t=2
m=0x30230430;3
c=0x10230430;r=90;g=6;t=1
c=0x10230430;r=92;g=6;t=2
c=0x10230430;r=94;g=7;t=1
c=0x10230430;r=96;g=7;t=2
Одной регуляркой, по значению r, нужно найти его основную группу m. Например, по r=94, получить m=0x30230430
 

sngr

AutoIT Гуру
Сообщения
983
Репутация
392
Код:
$file='m=0x10230428;1'& @CRLF
$file&='c=0x10230428;r=10;g=1;t=1'& @CRLF
$file&='c=0x10230428;r=20;g=1;t=2'& @CRLF
$file&='c=0x10230428;r=30;g=2;t=1'& @CRLF
$file&='c=0x10230428;r=40;g=2;t=2'& @CRLF
$file&='c=0x10230428;r=50;g=3;t=1'& @CRLF
$file&='c=0x10230428;r=55;g=3;t=2'& @CRLF
$file&='m=0x20230429;2'& @CRLF
$file&='c=0x10230429;r=60;g=4;t=1'& @CRLF
$file&='c=0x10230429;r=70;g=4;t=2'& @CRLF
$file&='c=0x10230429;r=80;g=5;t=1'& @CRLF
$file&='c=0x10230429;r=85;g=5;t=2'& @CRLF
$file&='m=0x30230430;3'& @CRLF
$file&='c=0x10230430;r=90;g=6;t=1'& @CRLF
$file&='c=0x10230430;r=92;g=6;t=2'& @CRLF
$file&='c=0x10230430;r=94;g=7;t=1'& @CRLF
$file&='c=0x10230430;r=96;g=7;t=2'& @CRLF
$val='94'
$str=StringRegExpReplace($file,'(?s).*?m=([^;]+)[^m]*r='&$val&'.*','\1')
MsgBox(32,'',$str)
 
Верх