2016-08-08 7 views
0
строки

Моего примером:Java - шаблон соответствие между той же схемой

a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg 

Мне нужно найти все содержимое между в.

У меня есть (?<=a).* Но он соответствует всем содержимым после a. Но я хочу найти между a.

Первая итерация: ghgduysgd

Вторая итерация: fdferfdf

Я хочу, чтобы получить данные, как выше для манипуляций. вы можете помочь с регулярным выражением?

ответ

1

Вы alrady использовать 'назад в своем регулярном выражении, изменить его также использовать предпросмотр:

(?<=a).*(?=a|$) 

Затем сделайте .* нежадным остановиться на первый доступный «окончание» a:

(?<=a).*?(?=a|$) 

EDIT: a|$ от комментария tobias_k в поле ниже, первоначально это был просто a

+0

Это соответствует только первые две строки –

+2

Guess можно изменить предпросмотр для '| $', чтобы исправить это. –

+0

@tobias_k Именно то, что вы сказали, сработало. –

5

Вы можете попробуйте регулярное выражение, как это (и игнорировать первое значение)

String path = "a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg"; 
String[] arr = path.split("(\\s+)?a(\\s+|$)"); // split based on a preceeded and followed by space 
for (String s : arr) { 
    System.out.println(s); 
} 

O/P:

// Empty String here. Since your String starts with a 
ghgduysgd 
fdferfdf 
bvfxbgdf 
gdfgdfg 
+0

Будет ли работать, даже если моя строка слишком большая? –

+0

@GopsAB - Да. Вы можете попробовать – TheLostMind

1

Вы могли бы разделить строку, где есть «а», а затем обрезать пробелы и сохранить его в ArrayList. Затем, если вы хотите напечатать все слово, вы можете использовать Stringbuilder для объединения строк.

String word="a ghgduysgd a fdferfdf a bvfxbgdf a gdfgdfg"; 
     List<String> list=new ArrayList<String>(); 
     list= Arrays.asList(word.split("a")); 
     StringBuilder sb = new StringBuilder(); 
     for(String item: list){ 
      item.trim(); 
     System.out.println(item); 
     sb.append(item); 
     } 

     System.out.println(sb); 
+0

Мысль такая же. Но закончил с регулярным выражением. –

Смежные вопросы