Regex - захватывать, только если строка существует, если не игнорироватьJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Regex - захватывать, только если строка существует, если не игнорировать

Сообщение Anonymous »

У меня есть такая строка:
  • blabla и (ee.xybfkr_eer in (:something) или 'Y'=:see)
Я хотел бы захватить в группе только строку «ee.xybfkr_eer in (:something)».
но иногда строка без «ee». часть:
  • blabla и (xybfkr_eer в (:something) или 'Y'=:see)
Если это так, то я хотел бы записать группу как «xybfkr_eer in (:something)»
Строка «ee» может отличаться, поэтому содержит другие буквенные символы.
На данный момент код:

Код: Выделить всё

String command = "blabla and (ee.xybfkr_eer in (:something) or 'Y'=:see)";
String patternText = "(?si).*\\W((\\w+\\.)?\\w*\\sin\\s*\\(\\s*:something\\s*\\)).*";
Matcher matcher = Pattern.compile(patternText).matcher(command);

Assert.assertTrue(matcher.matches());
System.out.println(matcher.group(1).trim());
Но

Код: Выделить всё

(\\w+\\.)?
часть не захватывает «ии». если имеется. Это должно сработать, если «ee». доступен, затем запишите его, в противном случае, если он не существует, игнорируйте. Может ли кто-нибудь помочь мне поймать «ee». также часть, если она доступна?
Я использую Java 8.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/792 ... not-ignore
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»