2015-08-06 4 views
0

Я пытаюсь найти регулярное выражение, которое соответствует, если параметр в строке запроса содержит определенное число в массиве, разделенном запятой.Регулярное выражение для соответствия определенному номеру в строке запроса

Чтобы проиллюстрировать на примере давайте я есть строки запроса, выглядит следующим образом:

str1 = "var1=ads12fafff&var2=10,1,5,200&var3=asdfvvv" # should not match 
str2 = "var1=adsfsadff&var2=12,15&var3=dasfdsfsadf" # should match 
str3 = "var1=dsafasdf&var2=50,12,1,20&var3=asdffae" # should match 

... и теперь я хочу, чтобы соответствовать, какие строки содержат номер в var2 - т.е. str2 и str3.

Кто-нибудь понял, как это может выглядеть?

+2

На каком языке это? – gymbrall

ответ

3

Попробуйте это регулярное выражение:

var2=(?:\d+,)*12(?:,|&|$) 

С его помощью против каждой строки, если есть совпадение, то сделать что-то.

Regex live here.

Надеется, что это помогает.

+0

Спасибо! Это почти работает, я думаю - только поймать то, что он также, кажется, соответствует номерам, которые содержат 12, например 120 или 4120. –

+1

@ ErikÖstling Он также соответствует 12 внутри var3 =. на каком языке это? – gymbrall

+0

@gymbrall Это для Руби. –

0

Попробуйте следующее:

var2=[\d,]*12[,\d]* 

Regular expression visualization

Debuggex Demo

Это соответствует ...

  • str2:var1=adsfsadff&var2=12,15&var3=dasfdsfsadf
  • str3:var1=dsafasdf&var2=50,12,1,20&var3=asdffae

... и не соответствует:

  • str1:var1=ads12fafff&var2=10,1,5,200&var3=asdfvvv
  • str3 изменение:var1=50,12,1,20&var2=dsafasdf&var3=asdffae
Смежные вопросы