Учитывая следующие строки (stringToTest):
G2:7JAPjGdnGy8jxR8[RQ:1,2]-G3:jRo6pN8ZW9aglYz[RQ:3,4]
G2:7JAPjGdnGy8jxR8[RQ:3,4]-G3:jRo6pN8ZW9aglYz[RQ:3,4]
И Узор:
Pattern p = Pattern.compile("G2:\\S+RQ:3,4");
if (p.matcher(stringToTest).find())
{
// Match
}
Для строки 1 я НЕ хочу совпадать, потому что RQ: 3,4 связан с разделом G3, а не G2, и я хочу, чтобы строка 2 соответствовала, поскольку RQ:3,4
связан с разделом G2.
Проблема с текущим регулярным выражением состоит в том, что он ищет слишком далеко и в конечном итоге достигает RQ:3,4
в случае 1, хотя я не хочу рассматривать его за пределами раздела G2.
Также возможно, что stringToTest может быть (только один раздел):
G2:7JAPjGdnGy8jxR8[RQ:3,4]
Строки 7JAPjGdnGy8jxR8
и jRo6pN8ZW9aglYz
являются хэшами переменной длины.
Может кто-нибудь помочь мне с правильным регулярным выражением для использования, чтобы начать смотреть на G2 для RQ:3,4
, но остановиться, если он достигнет конца строки или -G (начало следующего раздела).