Регулярное выражение

C
На сайте с 15.02.2018
Offline
0
715

Есть строка "unimportant symbols test: text1, test: text2, test: text3". Как составить регулярное выражение так, чтобы получить только "text1", "text2" и "text3"?

Samail
На сайте с 10.05.2007
Offline
369
#1

text\d

................

C
На сайте с 15.02.2018
Offline
0
#2

textX - это произвольный текст, т.е. строка будет "unimportant symbols test: <some text> test: <some other text>", причем число подстрок вида "test: <some text>" заранее неизвестно.

Samail
На сайте с 10.05.2007
Offline
369
#3

(?:test:\s)([^,]+)

Что вообще сделать нужно с этой строкой? И чем нужный текст разделяется. Начинается с "test:", а заканчивается запятой? ...во втором примере нет запятой.

C
На сайте с 15.02.2018
Offline
0
#4

Нужно получить список блоков <some text>, <some other text>. Заканчиваться может, чем угодно, но известно, что следующий блок текста начинается с "test:".

Samail
На сайте с 10.05.2007
Offline
369
#5

$str = "unimportant symbols test: text1, test: text2, test: text3 test: some text test: some other text";

$list = explode("test: ", $str);
array_shift($list);
print_r($list);
C
На сайте с 15.02.2018
Offline
0
#6

Хотелось бы составить регулярное выражение.

Samail
На сайте с 10.05.2007
Offline
369
#7

$str ='unimportant symbols test: text1, test: text2, test: text3 test: some text test: some other text';

preg_match_all('~(?:test:\s)((.(?!test:\s))+)~', $str, $matches, PREG_OFFSET_CAPTURE);
print_r($matches[1]);

Или:

$str ='unimportant symbols test: text1, test: text2, test: text3 test: some text test: some other text';

preg_match_all('~(?:test:\s)((.(?!test:\s))+)~', $str, $matches, PREG_OFFSET_CAPTURE);

foreach ($matches[1] as $k => $v) {
echo "$v[0]<br/>";
}
LH
На сайте с 26.09.2013
Offline
89
#8

(?<=test:)\s*(\w+)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий